探究了一下jenkins自动化构建项目打包的流程实现:本篇文章主要讲的是实现,在下一篇文章中,实现脚本自动化
引用:
Jenkins做的操作其实很简单,它只是将我们平时做的每一步重复的操作自动化了而已。因此,iOS中Jenkins要做的分为以下几步:
1.拉取远端代码
2.由于某种条件触发后开始自动编译,打包
3.将生成的ipa文件上传到指定位置,供测试下载测试
这三步中,每一步Jenkins什么都没做,它只是调用了Mac中的一些工具,具体的说就是使用了命令行工具。有的做成了可视化的插件,有的还是要通过自己写命令来实现。典型的就是编译和打包的命令是调用xcodebuild命令。
首先,我们通过命令行进行打包ipa文件
/*
* 本命令指示clean清理,即使不使用,也不影响后面的操作
*/
xcodebuild clean -workspace Rongshu.xcworkspace -scheme 项目名 -configuration Release或者Debug
/*
* param: archive文件的路径,比如:/Users/bairong/Desktop/demo demo直接就是archive包的名字了
*/
xcodebuild archive -workspace 项目名.xcworkspace -scheme 项目名 -archivePath param
/*
* param1 : 第二步中生成的archive包的路径
* param2 : 盛放.ipa包的文件夹路径 /User/XXX/Desktop/XXX
* param3 : ExportOptions.plist文件的路径,这个文件需要我们先创建好,然后传入路径,这个文件里,可以指定development、ad-hoc,我们用xcode生成的ipa文件夹中有这个文件
*/
xcodebuild -exportArchive -archivePath "<param1>" -exportPath param2 -exportOptionsPlist "<param3>"
遇见问题:
1. 第一次很顺利,第二次报错code = 9,证书找不到,然后处理措施:
1.关闭自动匹配描述证书,不行
2.在ExportOptions.plist中增加provisioningProfiles这个key,然后写入证书信息,还是不行
3. 将证书在钥匙串中从登录移动到系统,还是不行
额...然后所有都还原,重启终端客户端,又好了。。。
参考链接:
https://blog.csdn.net/yuanmengong886/article/details/78214978
https://blog.csdn.net/qq_34047841/article/details/54144149
ipa文件
实际上就是一个 zip 文件,我们使用系统的 zip 命令来生成 ipa 文件即可。(可以解压)
文件夹目录:
Payload: .app文件
SwiftSupport: 一些iphoneos .dylib文件
Symbols: .symbols文件
如何生成让设备可以直接安装的扫描二维码、html链接
苹果允许用 itms-services 协议来直接在 iphone/ipad 上安装应用程序
前提条件:
- 一个指定格式的plist文件(其中包含ipa的URL地址)
<?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>https://xxx.com/packageDownloader/ios/xxx/xxx.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>bundle id</string>
<key>bundle-version</key>
<string>版本号</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>xxx</string>
</dict>
</dict>
</array>
</dict>
</plist>
-
一个符合苹果规范的链接(其中包含plist文件的url):
itms-services://?action=download-manifest&url=https://****/***.plist
坑1: Safari直接访问itms-services:/ / 协议链接,会提示打不开该网页,因为链接无效,在网页上通过点击a超链接或者扫描二维码(二维码信息为这个链接)就会弹出弹窗,下载应用
坑2: 在iOS 7.1版本之后,通过itms-service安装应用时,要求itms-service协议后面的url的值即plist文件的地址必须为https地址,且设备必须信任此https服务器的SSL证书(网上有说:必须是公网ssl,自签名及免费的https不可用。这个限于条件就没验证了)