参考文章:
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
命令
最终我们将这个网页发给测试使用,就可以满足多项目并发时快速打包的需求了!!!