探究了一下jenkins自動化構(gòu)建項目打包的流程實現(xiàn):本篇文章主要講的是實現(xiàn),在下一篇文章中,實現(xiàn)腳本自動化
引用:
Jenkins做的操作其實很簡單,它只是將我們平時做的每一步重復(fù)的操作自動化了而已。因此,iOS中Jenkins要做的分為以下幾步:
1.拉取遠(yuǎn)端代碼
2.由于某種條件觸發(fā)后開始自動編譯,打包
3.將生成的ipa文件上傳到指定位置,供測試下載測試
這三步中,每一步Jenkins什么都沒做,它只是調(diào)用了Mac中的一些工具,具體的說就是使用了命令行工具。有的做成了可視化的插件,有的還是要通過自己寫命令來實現(xiàn)。典型的就是編譯和打包的命令是調(diào)用xcodebuild命令。
首先,我們通過命令行進(jìn)行打包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文件的路徑,這個文件需要我們先創(chuàng)建好,然后傳入路徑,這個文件里,可以指定development、ad-hoc,我們用xcode生成的ipa文件夾中有這個文件
*/
xcodebuild -exportArchive -archivePath "<param1>" -exportPath param2 -exportOptionsPlist "<param3>"
遇見問題:
1. 第一次很順利,第二次報錯code = 9,證書找不到,然后處理措施:
1.關(guān)閉自動匹配描述證書,不行
2.在ExportOptions.plist中增加provisioningProfiles這個key,然后寫入證書信息,還是不行
3. 將證書在鑰匙串中從登錄移動到系統(tǒng),還是不行
額...然后所有都還原,重啟終端客戶端,又好了。。。
參考鏈接:
https://blog.csdn.net/yuanmengong886/article/details/78214978
https://blog.csdn.net/qq_34047841/article/details/54144149
ipa文件
實際上就是一個 zip 文件,我們使用系統(tǒng)的 zip 命令來生成 ipa 文件即可。(可以解壓)
文件夾目錄:
Payload: .app文件
SwiftSupport: 一些iphoneos .dylib文件
Symbols: .symbols文件
如何生成讓設(shè)備可以直接安裝的掃描二維碼、html鏈接
蘋果允許用 itms-services 協(xié)議來直接在 iphone/ipad 上安裝應(yīng)用程序
前提條件:
- 一個指定格式的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>
-
一個符合蘋果規(guī)范的鏈接(其中包含plist文件的url):
itms-services://?action=download-manifest&url=https://****/***.plist
坑1: Safari直接訪問itms-services:/ / 協(xié)議鏈接,會提示打不開該網(wǎng)頁,因為鏈接無效,在網(wǎng)頁上通過點擊a超鏈接或者掃描二維碼(二維碼信息為這個鏈接)就會彈出彈窗,下載應(yīng)用
坑2: 在iOS 7.1版本之后,通過itms-service安裝應(yīng)用時,要求itms-service協(xié)議后面的url的值即plist文件的地址必須為https地址,且設(shè)備必須信任此https服務(wù)器的SSL證書(網(wǎng)上有說:必須是公網(wǎng)ssl,自簽名及免費(fèi)的https不可用。這個限于條件就沒驗證了)