前言
之前已经搭建了移动端自动化打包平台,大致流程:Jenkins选择打包分支、构建版本、环境->触发构建、开始编译->编译打包成功->拿到包名、版本号、构建号、日期信息,修改包名->上传oss备份->上传蒲公英进行分发->拿到分发二维码发送钉钉。由于上传蒲公英经常出现很慢的情况,几十兆的包有时候需要上传将近一个小时,影响打包效率。因此寻找替代方案,放弃上传蒲公英。
解决方案
Android
Android包好处理,拿到oss的下载链接,用该链接生成二维码,就可以通过扫码下载apk包进行安装。
iOS
ipa包可以像apk包一样下载后直接安装吗? 不可以。由于Apple 和 Google 在移动应用分发策略上存在一些差异,苹果公司实施了相对严格的应用分发政策,并且要求所有应用必须通过苹果的 App Store 进行审核和发布。导致ipa包无法像apk包一样直接安装。
对于企业内部开发的应用或者测试版本的应用,可能不适合在App Store 中发布,那该怎么办呢?苹果公司应该也考虑到了这一点,提供了itms-services 协议来安装这些应用。
itms-services 协议安装应用的关键步骤: 每个安装包需要配置一个plist文件,文件中配置app信息,用于下载。
plist文件模版
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>此处填写ipa包下载路径</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>title</key>
<string>此处填写弹框内容比如:确认安装吗</string>
<key>bundle-version</key>
<string>此处填写版本号</string>
<key>kind</key>
<string>software</string>
<key>bundle-identifier</key>
<string>此处是bundleid</string>
</dict>
</dict>
</array>
</dict>
</plist>
这里笔者将此文件上传到oss,通过Safari 浏览器访问itms-services://?action=download-manifest&url=此时为plist文件下载地址,就可以直接安装ipa包了。
注意
plist文件地址必须是https
有了解决方案,接下来修改打包流程即可
Jenkins选择打包分支、构建版本、环境->触发构建、开始编译->编译打包成功->拿到包名、版本号、构建号、日期信息,修改包名->上传oss备份->iOS生成包对应的plist文件并上传到oss->生成下载二维码->保存二维码到oss->发送钉钉通知
后续
可以将打包信息存储到数据库,开发一个应用管理平台,来管理所有的包。