1. IPA的无线分发

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

  index.htm
  AppName.plist
  AppName.ipa

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

<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菜单项生成的,其内容如下

//! newest_archive.sh
newest=
backIFS=$IFS
IFS=$(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
fi
done
echo "${f}"
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

IPA文件的自动化生成和无线分发的更多相关文章

  1. 企业级项目把.app文件转成.ipa文件的自动化实现

    将MakeIPA.sh添加到项目的根目录下 此脚本针对企业级项目打包,不会编译项目,在打包前确认项目已经编译完成生成了"XXX.app"文件 使用前需要配置该脚本部分路径才能正确打 ...

  2. Xcode生成ipa文件

    想到蒲公英应用做分发测试的同学们可以用的到哈 在测试的Device中切换为IOS Device,选择当前项目修改BuildSeting 在code signing Identity中选择证书,没有测试 ...

  3. Xcode打包和生成ipa文件

    1.生成Archive文档 a) 需将左上角红色方框里的设备类型选为ios device,不能选择具体的设备类型,否则不能生成Archive文档: b) 中部选择Team的方框,可此时选,也在后续ex ...

  4. XE7 & IOS开发之开发账号(3):证书、AppID、设备、授权profile的申请使用,附Debug真机调试、Ad hoc下iPA文件生成演示(XCode5或以上版本推荐,有图有真相)

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 注意,以下讨论都是以&q ...

  5. XE7 & IOS开发之开发账号(2):发布证书、发布授权profile的申请使用,附Ad hoc真机调试、生成ipa文件演示(XCode所有版本通用,有图有真相)

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 注意,以下讨论都是以&q ...

  6. XE6 & IOS开发之免证书真机调试(3):生成iPA文件并安装到其它苹果设备上(有图有真相)

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 1.既然我们已经在真机上 ...

  7. ios项目生成ipa文件方法

    做这些的前提是你配置好了所有的证书,如果还没先去配置证书吧. 1.打开需要生成ipa的ios项目.2.在运行按钮的后面选择ios Device3.点击Product 按钮,选择第五个Archive4. ...

  8. XE6 /XE8 & IOS开发之免证书真机调试三步走,生成iPA文件并安装到其它苹果设备上

    XE6 & IOS开发之免证书真机调试(1):颁发属于自己的App签名证书(有图有真相) XE6 & IOS开发之免证书真机调试(2):连接真机并运行App(有图有真相) XE6 &a ...

  9. 关于自动编译iOS工程,生成app及ipa文件的方法-备

    文章地址. 1.所需语句(可直接在命令行中执行) xcodebuild -configuration Release        进入所在工程的根目录文件夹,执行上面的语句,即可开始自动使用rele ...

随机推荐

  1. 接口测试“八重天”---HttpClient

    HTTP协议在互联网无处不在,在前面的章节中记录了‘接口本质即协议’,因此,接口测试首先了解的便是协议,其发送数据包和接收数据包的过程,其次便是如何在测试中去发送去解析,不论是通过代码还是工具也好,抽 ...

  2. PHP CRC16 校验码的算法怎么使用

    PHP CRC16 校验码的算法如何使用最近用到CRC16, 我现在就是要把 010301180001 算出CRC16的校验码,通过其他工具,可以得到 校验码是 05F1 最后完整的代码就是 0103 ...

  3. mysql 5.6.15升级到5.6.43

    今天闲来无事,观察测试环境的zabbix服务器,发现内存泄漏严重,于是重启了,想起了前几天写的帖子发生了严重的内存泄漏可以把mysql升级到最新的小版本 于是乎就试着升级 old version:5. ...

  4. Spring中使用JDBC

    Spring中的数据库异常体系 使用JDBC(不使用Spring)的时候,我们需要强制捕获SQLException,否则无法使用JDBC处理任何事情.SQLException表示尝试访问数据库的时候出 ...

  5. python入门第3篇 pycharm安装及使用

    内容: 1. python开发工具的介绍及安装 2.pycharm的设置及技巧 一.python开发工具的介绍及安装 python下载后就自带了一个官方的IDE,官方的IDE我个人觉得不是很好用,所以 ...

  6. 32_java之TCP和UDP

    01网络模型 *A:网络模型 TCP/IP协议中的四层分别是应用层.传输层.网络层和链路层,每层分别负责不同的通信功能,接下来针对这四层进行详细地讲解. 链路层:链路层是用于定义物理传输通道,通常是对 ...

  7. 好记性不如烂笔头-linux学习笔记1

    好记性不如烂笔头-linux学习笔记1 linux的文件系统有ext2,ext3,ext4,目前主流是ext4 linux主要用于服务器级别的操作系统,安装时需要至少2个分区 一个是交换分区,swap ...

  8. 使用TensorFlow识别照片中的物体

    1.环境ubuntu14.04.5 安装TensorFlow 官方文档:https://www.tensorflow.org/install/install_linux sudo pip instal ...

  9. IOS上架(九) AppStore编译生成ipa文件并上传

    IOS上架上传ipa文件 AppStore https://itunesconnect.apple.com delphi project>option里的CFBundleVersion 上传的版 ...

  10. Django+python实现网页数据的excel导出

    一直都想做一个网页的excel导出功能,最近抽时间研究了下,使用urllib2与BeautifulSoup及xlwt模块实现 urllib2这个模块之前有用过,关于BeautifulSoup模块,可参 ...