参考文章:
iPhone上使用 itms-services 协议安装 IPA 包
持续化集成中,为了应对多项目并行开发的测试需求,需要提供一个ios端的安装包平台。
想要实现自主分发,主要依赖itms-services服务
- 首先
iphone捕捉到itms-services://开头的链接如itms-services://?action=download-manifest&url=https://ip:port/plists/xxxxxx.plist - 然后根据
url参数去获取对应的plist文件 - 根据
plist文件里的配置去下载ipa。
所以我们需要提供的主要文件便是plist文件和ipa文件
Xcode 生成plist和 ipa
首先我们先看xcode是如何生成plist文件的:
打开 Xcode -> Product -> Archive -> Distribute App

非企业证书选择Ad Hoc


这里的App URL便是下载ipa的地址
最终会生成一个文件夹:
其中manifest.plist便是我们所需要的文件:
|
|
搭建Demo页面
我们拿到这两个文件可以在电脑上搭一个简单的页面尝试下载。
打开Mac自带apache服务,这里要注意一定要开启https,因为itms-services://不支持http
|
|
- mac 开启apache ssl
/etc/apache2/httpd.config
|
|
/etc/apache2/extra/httpd-ssl.conf
|
|
/etc/apache2/extra/httpd-vhosts.conf
|
|
- 配置改完之后可以在终端执行
sudo apachectl configtest验证是否通过 - 然后执行
sudo apachectl,如果已经有在运行的httpd服务,先把之前的kill掉
这个时候在浏览器打开https://localhost便可以看到页面了
我们打开指定的网页目录/Library/WebServer/Documents,编辑一下html文件,然后将xcode生成的plist和ipa放到路径下
|
|
|
|
在手机上访问刷新页面,点击新增的a标签,此时会提示无法连接到服务器。
我们需要手机信任当前服务器证书
- 将上面生成的ssl证书中的
server.crt放到网页路径下 - 然后先点击证书,安装并信任后,再点击下载

至此为止,简单的Demo已经完成了,下一步便是完善了
搭建iOS下包平台
整个流程如下图:

- 代码提交后,通过
jenkins打包ipa jenkins将ipa上传至ipa存储服务器- 接收到
ipa后生成plist文件 - 将信息写入
sql供查询使用 - 搭建一个前端页面供测试下载
服务端部分
服务端部分使用了python3主要依赖了flask框架
代码地址(ps:代码没有分模块,没有拆分,没有加异常判断)
|
|
数据库部分
数据库部分主要使用了mysql

前端部分
前端部分主要使用vue,由同事帮忙开发,源码
最终效果:

这就是简单的一个安装包平台的搭建流程,对于企业账号来说,可以无限分发,但对于个人开发者账号的话,只有添加过的设备才能安装。
搭建好平台后,我们只需要在jenkins上面打包成功之后,添加一个脚本将ipa发送给服务器就好了,可以直接使用curl命令
最终我们将这个网页发给测试使用,就可以满足多项目并发时快速打包的需求了!!!