iOS自动化打包意味着从代码提交到测试小伙伴安装新包都是全自动化操作,无需人为操作,需要实现自动化打包,需要做到的是:
1、代码提交触发自动打包
2、打包完成自动提交内部web服务器
3、测试小伙伴可以通过web页面安装新包
我们的实现方案:
image核心步骤主要依赖以下步骤:Jenkins + fastlane + AppHost
1、第一步:Jenkins
通过Jenkins管理打包开关,可以支持手动打包和脚本触发打包,当提交代码后自动触发打包机制。
[Jenkins 使用说明书]后补
2、第二步:Fastlane
fastlane是iOS中常用的自动打包工具、包括打包、上传等功能,简单好用,支持自定义,可以定制各种需要的需求。
可以更好的管理xcode打包证书、打包日志等等。
3、第三步:AppHost
一个轻量级的包托管网站,app-host 主要用于 iOS 和 Android 的包管理,作用类似于fir.im,不同之处是可以自由部署在内网,方便了公司项目保密。并且代码开源也可以方便根据各自需求进行定制化开发。
[AppHost使用说明书] 后补
4、知识科普
1、为什么web页面可以直接安装新包
依赖于 safari items-services协议
先做一个简单的了解
1、在本地开一个tomcat,然后找一个工程,我这里选了ROOT默认工程,放入一个用开发证书(或者ad-hoc)打包的ipa。
2、配置一份plist,最主要的是ipa的url地址,这个地址是你通过tomcat能访问到ipa的地址。
<?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>http://10.3.20.31:8080/personal.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.xxx.xxx</string>
<key>bundle-version</key>
<string>6</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>个人简历</string>
</dict>
</dict>
</array>
</dict>
</plist>
3、把这份plist挂到一个https地址上,保证可以通过https访问(我这边挂在了https://gitee.com,其他代码管理地址都可以,然后使用它的原始数据地址)
注意:因为apple要求使用https,所以必须是https,没有的话,可以自己签名签一个,反正内部使用
4、拼接一份itms-services
itms-services://?action=download-manifest&url=https://gitee.com/具体地址/test.plist
5、因为这个证书是受信任的,所以通过手机safari访问这个地址就可以安装我们之前保存在tomat下面的ipa
2、UDID的获取和注册之路
如何让设备自己就可以完成在开发者账号下面注册设备号并且重新更新打包机profile
https://github.com/shaojiankui/iOS-UDID-Safari
自动化测试、monkey、自动解析测试日志提交JIRA
代码静态分析
同一个设备安装不同版本App
脚本添加UDID到ADP
查看App沙盒日志
网友评论