前言
在測試app項目過程中,通常都是需要開發打測試包給到測試,但是無論是iOS還是Android的打包過程都是相當漫長的,頻繁的回歸測試需要頻繁的打包,對於開發同學影響還是蠻大的。因此在這種情況下,開發通常都會搭建一個簡單的自動化打包平台(Jenkins),自動化構建打包或者上傳到蒲公英,firm等分發平台。作為測試也需要了解相關的知識,因為這些工作也有可能測試來做或推動開發去做相關的工作,用以優化提高開發測試效率。
涉及技術點:
- Jenkins的搭建配置,任務構建
- iOS開發環境配置
- iOS打包(證書配置)
- iOS命令行打包xcodebuild的使用
xcode打包介紹
准備工作
如果不打包,直接在測試機上跑app是不需要證書和描述文件的。只要有Apple ID就是可以的,它可以自動生成描述文件,然后讓app運行到測試機上。
如果是需要打包分發的話,就是必須要有證書和描述文件。
證書有兩種,一種是開發證書,一種是上線證書,當然測試只需要拿到開發證書就可以了,大部分情況下上線工作是不需要測試來做的(涉及到一些開發者賬號等東西)。
如果我們需要本地打包的話那么就需要跟開發要兩樣東西:
- 開發證書
- 描述文件
開發證書拿到之后雙擊打開就好,可以在鑰匙串中看到安裝好的證書。
描述文件需要單獨保存一下,一些配置可能用到,Xcode配置中需要導入。
代碼權限,跟開發拿到代碼權限,git clone到本地。
Xcode使用
Xcode是iOS開發IDE,使用的時候需要跟開發同步使用的版本,有些開發是一直用最新版的,有的可能用的是老版本,會有問題。
檢查本地環境及代碼
使用Xcode打開clone到本地的代碼,如果版本什么都對應的話,build應該是沒有問題的。
command+b build項目,查看是否有錯誤。
或者導航欄:product → Build
如果沒什么問題,可以編譯build成功就OK了。
模擬器運行
如果只是模擬器運行是不需要配置證書描述文件的,選擇模擬器類型,直接運行就好了。
真機運行
真機運行有兩種方式:
- 一種是不需要證書描述文件但是需要一個appleID賬號密碼
- 一種是需要證書描述文件導出.ipa包
第一種方式的話只能手機通過USB鏈接到電腦上,然后運行項目在手機上安裝app
第二種方式的話是可以導出ipa文件傳輸到手機上安裝
第一種方式:
可以通過導航欄Xcode → Preferences → Accounts 添加apple賬號
在項目中配置(target→ sanjieke),有個Automatically manage signing,勾選了后選擇apple賬號就會自動生成配置描述文件
如果有錯誤看下錯誤說明,然后調整下配置,一般的錯誤就是
buddle id的問題
iOS版本的問題
調整下就沒什么問題了。
第二種方式,真機打包
如果是導出包安裝測試的話,還需要在開發者中心把測試機的udid加入到里面,這個給到開發就好了
安裝好了證書,拿到了描述文件,在項目中配置
還是上圖紅框的內容,不要點擊Automatically manage signing了,點擊provisioning profile,選擇import profile,將描述文件導入就可以了。
然后在模擬器那個位置選擇Generic iOS Device
導航欄 Product → Archive
按照提示一步步選擇就好了,最后會在你選擇的路徑下生成需要的ipa 包。
xcodebuild命令介紹
如果不想手動操作打包,還可以使用命令打包
xcodebuild基礎命令
- xcodebuild -usage 查看xcodebuild用法
- xcodebuild -showsdks 查看安裝的sdk
- xcodebuild -list 查看項目中的target(目標項目),configuration(打包環境debug,release)和schemes(項目名), 這三個參數也是后續打包需要用到的
- xcodebuild 構建生成archive文件 archive -archivePath <archivePath> -project <projectName> -scheme <schemeName> #從-list命令中獲取 -configuration < Debug|Release> -sdk <sdkName> #sdkName可從showsdks命令中獲取
- xcodebuild 將archive文件導出為ipa文件 -exportArchive -archivePath <xcarchivepath> -exportPath <destinationpath> -exportOptionsPlist <plistpath>#這個plist文件可以通過打一次ipa包里面去獲取,然后根據需求修改
xcodebuild命令實際應用
從基礎命令來看用的最多的就是4和5,實際上命令行導出ipa文件有兩種方式
- 一種方式是先將項目構建成.app文件,通過xcodebuild build, 然后使用xcun 將app文件導出生成ipa,但是目前新版本的不支持這種方式了,一般用2
- 另外一種方式就是先構建生成.xcarchive文件, 然后導出生成.ipa文件
注意一點的是,plist文件我們可以通過用Xcode打包一次獲得,然后根據需要修改,也可以參數化,內容如下:
<?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>compileBitcode</key> <true/> <key>destination</key> <string>export</string> <key>method</key> <string>development</string> <key>provisioningProfiles</key> <dict> <key>com.sanjieke.app</key> <string>com.sanjieke.appDevelop</string> </dict> <key>signingCertificate</key> <string>iPhone Developer</string> <key>signingStyle</key> <string>manual</string> <key>stripSwiftSymbols</key> <true/> <key>teamID</key> <string>V5LUS4979S</string> <key>thinning</key> <string><none></string> </dict> </plist>
xcodebuild打包腳本
知道了如何用命令行進行打包后,我們可以自己寫個簡單的腳本來進行打包,然后集成到Jenkins的話直接執行腳本,不使用Jenkins提供的Xcode插件,更加方便。