TMDBug

Code Change The World And Make It Better!

TMD.Bug

iOS自动化打包ipa并上传到自己服务器进行下载

要搞的是这么一件事情,就是通过命令行去实现自动打包,然后上传到测试分发平台。
但是公司的app又不让上传到第三方的平台上,所以就又搞了一个测试分发平台。

首先,先去实现自动化打包并导出.ipa文件,通过查资料都是用 xcodebuild 命令操作的。

自动化打包导出ipa大致分为四步:

clean
build
archive
exportArchive

当导出.ipa后,可以上传到版本分发平台,比如蒲公英或fir.im等,申请其上传api接口,可以实现打包完自动上传。
但是由于公司不让使用第三方平台,然后又发现.ipa不是上传到网站目录就能供人下载。
就又查资料,思考这些平台是怎么处理的。

发现ipa上传到第三方平台后大致的处理

1.先要一个Manifest.plist文件,将相关信息(ipa地址、图标、名称、bundleID等)按格式写入到这个文件中。
2.再需要将在下载页的a标签href设置为 itms-services://?action=download-manifest&url=’plist文件地址’
3.ipa下载链接必须为https的。

然后,又想了下第三方平台是如何获取到这些的,猜测是ipa包中信息,于是将ipa进行了解包,发现了里面的 Info.plist 和 app图标,Info.plist中有所有的配置信息,于是就去提取ipa中的plist文件,提取完写入到Manifest.plist。

最终ipa上传到自己的分发平台最终思路:

1. 自动导出ipa
2. 导出后自动上传到服务器网站的下载目录
3. 服务器进行对ipa解包提取plist、同时把icon图标复制到下载目录
4. 将提取的plist相关信息和图标下载路径写入Manifest.plist
5. 将下载地址生成二维码
6. 刷新网站下载页面
7. js判断页面打开的浏览器,提示其用手机的Safari打开

于是搞定了自动打包导出.ipa后,就开始着手搞网站,因为自动打包和提取plist是shell写的,上传后不知道PHP能不能操作shell。
但是Python可以啊,于是就用Python的bottle网站框架做了一个简易的网站。同时也把shell的打包方法改成了Python。
服务器Python接收到传上来的ipa后,对ipa按步骤进行操作。
最终实现,ipa自动打包后上传到自己的分发平台。


自动打包导出
https://github.com/TMDBug/auto_packing

服务器解包读取 ipa 中的 plist 数据
https://github.com/TMDBug/read_ipa_plist

8 + 1 =

回到顶部