博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IPA文件的自动化生成和无线分发
阅读量:4557 次
发布时间:2019-06-08

本文共 2564 字,大约阅读时间需要 8 分钟。

1. IPA的无线分发

  iOS应用开发测试过程中,通过无线网络进行IPA包的分发将是非常便捷的,于是也就有了类似之类的平台。对于这一功能,我们也可以自己实现,只需要一个简单的http server,并部署三个文件:

  index.htm  AppName.plist  AppName.ipa

AppName.plist 和 AppName.ipa 文件的生成方式会在后面讲述,而 index.htm的内容如下:

可以猜测,该index.htm页面的功能是下载plist文件,并进行触发ipa文件的下载和安装。

注:

  iOS Developer Program 类账号可注册的测试设备上限为100台,只有注册了其UDID的设备才可以安装该账号开发的App;

  iOS developer Enterprise Program 类账号则对设备数量不做限制,相对iOS Developer Program来讲,企业账号支持“in-house”应用,但不能提交应用到AppStore。该账号可创建"in-house"类型的Provisioning Profile,使用该Profile的App则可以安装到任何设备上,无须注册设备的UDID。

 

2. IPA文件的自动化生成

  手动生成(Xcode 5):

  点击 Xcode->Product->Archive 菜单项,会打开 Organizer-Archives 窗口,点击 Distribute...,然后选择 Save for Enterprise or Ad Hoc Deployment,之后要选择相应的Provisioning Profile文件,点击 Export 按钮会弹出保存ipa文件的窗口,勾选窗体下方的 Save for Enterprise Distribution 选项

其中"Application URL"为IPA文件的链接地址,如 http://192.168.1.5/AppName/AppName.ipa,然后填写Title后,其它内容都可不填。这样,保存后将会生成AppName.ipa 和 AppName.plist 两个文件。

 

  自动生成:

 上面讲到的生成ipa包的过程,需要点击、选择、填写等多个步骤。这里利用Xcode提供的命令行工具可以自动化完成,其关键命令为

xcodebuild -exportArchive -exportFormat IPA -archivePath AppName.xcarchive -exportPath AppName.ipa -exportProvisioningProfile 'MyApp Distribution Profile'

意为,使用provisionging profile 'MyApp Distribution Profile' 将归档文件 AppName.xcarchive 导出为IPA文件 AppName.ipa

其中 AppName.xcarvhive 文件在使用上面提到的Xcode->Product->Archive菜单项即可生成(这里要讲到的自动化生成,即在点击该菜单项后自动化生成IPA文件),此时生成的archive文件名都遵循按Xcode自定的命名规则,并统一生成到一个既定目录下(~/Library/Developer/Xcode/Archives)

 

在Archive Scheme中添加Post-actions

  在Product > Scheme > Edit Scheme 的 Archive 项中添加Post-actions,并在其Run Script中添加如下脚本

archive=`bash ~/tools/newest_archive.sh`ipa_path=~/ipa/AppName.iparm "${ipa_path}"xcodebuild -exportArchive -exportFormat IPA -archivePath "${archive}" -exportPath "${ipa_path}" -exportProvisioningProfile "MyApp Distribution Profile"

该脚本将在Archive菜单项的操作完成后自动执行。

 

获取最新的archive归档文件

  上面的shell脚本中的 newest_archive.sh 是一个简单的bash脚本,用以获取最新的archive文件,即刚刚由Archive菜单项生成的,其内容如下

//! newest_archive.shnewest=backIFS=$IFSIFS=$(echo -en '\n\b')for f in `find ~/Library/Developer/Xcode/Archives -name *.xcarchive`do        if [ -z $newest ]        then                newest=$f        elif [ $f -nt $newest ]        then                newest=$f        fidoneecho "${f}"FS=$backIFS

如此,在每次点击Archive菜单项时,都会将最新生成的archive归档文件自动导出为AppName.ipa文件,并将其存到~/ipa目录之下。

注:

  1. 也许Xcode有提供更方便的访问相应archive文件的方法,如有请指教

  2. plist文件手工生成一次即可,所以也就没有plist文件的自动化生成...

 

参考资料:

1. Wireless AdHoc Distribution

2. 颁发用于iOS设备的企业级应用程序

3. Xcode命令行工具之xcodebuild说明 

posted on
2014-02-23 22:05 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/cqgreen/p/3554870.html

你可能感兴趣的文章
理解class.forName()
查看>>
每日一小练——数值自乘递归解
查看>>
二叉搜索树 (BST) 的创建以及遍历
查看>>
MyBatis/Ibatis中#和$的区别
查看>>
【JAVASCRIPT】React学习-组件生命周期
查看>>
win 64 文件操作
查看>>
Java范例集锦(二)
查看>>
C语言变量和常量
查看>>
LInuxDay8——shell脚本编程基础
查看>>
topcoder 673
查看>>
Java中一些常用的类,包,接口
查看>>
下载特定区域内街景照片数据 | Download Street View Photos within Selected Region
查看>>
StarUML 破解方法
查看>>
C语言结构体
查看>>
[转]Tribon船体生产设计应用
查看>>
easy ui datagrid 让某行复选框不能选中
查看>>
第六周作业
查看>>
关于adb端口被占用的解决办法
查看>>
php 部分内置函数的使用
查看>>
字符串处理技巧
查看>>