iOS Jenkins 自動化打包構建


 

前言

在測試app項目過程中,通常都是需要開發打測試包給到測試,但是無論是iOS還是Android的打包過程都是相當漫長的,頻繁的回歸測試需要頻繁的打包,對於開發同學影響還是蠻大的。因此在這種情況下,開發通常都會搭建一個簡單的自動化打包平台(Jenkins),自動化構建打包或者上傳到蒲公英,firm等分發平台。作為測試也需要了解相關的知識,因為這些工作也有可能測試來做或推動開發去做相關的工作,用以優化提高開發測試效率。

 

涉及技術點:

  1. Jenkins的搭建配置,任務構建
  2. iOS開發環境配置
  3. iOS打包(證書配置)
  4. iOS命令行打包xcodebuild的使用

xcode打包介紹

准備工作

如果不打包,直接在測試機上跑app是不需要證書和描述文件的。只要有Apple ID就是可以的,它可以自動生成描述文件,然后讓app運行到測試機上。

如果是需要打包分發的話,就是必須要有證書和描述文件。

 

證書有兩種,一種是開發證書,一種是上線證書,當然測試只需要拿到開發證書就可以了,大部分情況下上線工作是不需要測試來做的(涉及到一些開發者賬號等東西)。

如果我們需要本地打包的話那么就需要跟開發要兩樣東西:

  1. 開發證書
  2. 描述文件

 

開發證書拿到之后雙擊打開就好,可以在鑰匙串中看到安裝好的證書。

描述文件需要單獨保存一下,一些配置可能用到,Xcode配置中需要導入。

代碼權限,跟開發拿到代碼權限,git clone到本地。

Xcode使用

Xcode是iOS開發IDE,使用的時候需要跟開發同步使用的版本,有些開發是一直用最新版的,有的可能用的是老版本,會有問題。

檢查本地環境及代碼

使用Xcode打開clone到本地的代碼,如果版本什么都對應的話,build應該是沒有問題的。

command+b  build項目,查看是否有錯誤。

或者導航欄:product → Build


 

如果沒什么問題,可以編譯build成功就OK了。

模擬器運行

如果只是模擬器運行是不需要配置證書描述文件的,選擇模擬器類型,直接運行就好了。


 

真機運行

真機運行有兩種方式:

  1. 一種是不需要證書描述文件但是需要一個appleID賬號密碼
  2. 一種是需要證書描述文件導出.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基礎命令

  1. xcodebuild -usage          查看xcodebuild用法
  2. xcodebuild -showsdks   查看安裝的sdk
  3. xcodebuild -list               查看項目中的target(目標項目),configuration(打包環境debug,release)和schemes(項目名), 這三個參數也是后續打包需要用到的
  4. xcodebuild        構建生成archive文件 archive -archivePath <archivePath> -project <projectName> -scheme <schemeName> #從-list命令中獲取 -configuration < Debug|Release> -sdk <sdkName> #sdkName可從showsdks命令中獲取
  5. xcodebuild       將archive文件導出為ipa文件 -exportArchive -archivePath <xcarchivepath> -exportPath <destinationpath> -exportOptionsPlist <plistpath>#這個plist文件可以通過打一次ipa包里面去獲取,然后根據需求修改

 

xcodebuild命令實際應用

從基礎命令來看用的最多的就是4和5,實際上命令行導出ipa文件有兩種方式

  1. 一種方式是先將項目構建成.app文件,通過xcodebuild build, 然后使用xcun 將app文件導出生成ipa,但是目前新版本的不支持這種方式了,一般用2
  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>&lt;none&gt;</string> </dict> </plist>

xcodebuild打包腳本

知道了如何用命令行進行打包后,我們可以自己寫個簡單的腳本來進行打包,然后集成到Jenkins的話直接執行腳本,不使用Jenkins提供的Xcode插件,更加方便。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM