移动端自动化打包平台探索

331 阅读2分钟

前言

之前已经搭建了移动端自动化打包平台,大致流程: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->发送钉钉通知

后续

可以将打包信息存储到数据库,开发一个应用管理平台,来管理所有的包。