您好,欢迎来到61ic! | [登录] [注册] 忘记密码 | 设为首页 帮助
 . 网站首页 . 业界新闻 . 设计中心 . 移动技术 . TI专栏 . ADI专栏 . FPGA专栏 . 代码工厂 . 官方商城 . 
 . 活动专区 . 新品快递 . 解决方案 . 前沿科技 . TI资源 . ADI资源 . FPGA资源 . 下载中心 . 产品展示 . 
加入收藏
付款方式
联系我们
您现在的位置: 61IC电子在线 >> 移动技术 >> iPhone >> 正文
  [图文]iOS IPA文件的自动化生成和无线分发           ★★★ 【字体:
iOS IPA文件的自动化生成和无线分发
作者:cnblogs    文章来源:cnblogs    点击数:    更新时间:2014-3-3    

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

  • index.htm
  • AppName.plist
  • AppName.ipa

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

  1. <a href="itms-services://?action=download-manifest&url=http://192.168.1.5/AppName/AppName.plist">Click to Install AppName</a> 

可以猜测,该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.ipa

rm "${ipa_path}"
xcodebuild -exportArchive -exportFormat IPA -archivePath "${archive}" -exportPath "${ipa_path}" -exportProvisioningProfile "MyApp Distribution Profile"

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

获取最新的archive归档文件

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

  1. //! newest_archive.sh 
  2. newest= 
  3. backIFS=$IFS 
  4. IFS=$(echo -en '\n\b'
  5. for f in `find ~/Library/Developer/Xcode/Archives -name *.xcarchive` 
  6. do 
  7.         if [ -z $newest ] 
  8.         then 
  9.                 newest=$f 
  10.         elif [ $f -nt $newest ] 
  11.         then 
  12.                 newest=$f 
  13.         fi 
  14. done 
  15. echo "${f}" 
  16. FS=$backIFS 

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

注:

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

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

参考资料:

1. Wireless AdHoc Distribution http://gknops.github.io/adHocGenerate/

2. 颁发用于iOS设备的企业级应用程序 http://help.apple.com/iosdeployment-apps/mac/1.1/?lang=zh-cn

3. Xcode命令行工具之xcodebuild说明 https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/xcodebuild.1.html

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    iOS开发中时间处理问题
    iOS开发中的Html解析方法
    为iOS7所设计的用户界面
    iOS 7完美越狱真是太坑爹了!
    iOS 7完美越狱发布 中国版存…
    注意:新一轮iOS 7越狱骗局出…
    iOS开发工具篇-AppStore统计…
    iOS 7.0.3让 iPhone 5s 性能…
    iOS 优化方案浅析
    iOS应用程序多语言本地化解决…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61 湘ICP备13001086号-2