今是昨非

今是昨非

日出江花红胜火,春来江水绿如蓝

iOS 自動打包

iOS 自動打包#

使用腳本實現自動打包,網上搜了好多,但是偶比較笨,一直發現不知道怎麼使用,看了好久,
終於改了個可以使用的,但是最後發現不能用 xcrun 導出;寶寶心裡苦,但寶寶不說😂;接著改,最後終於被我搗鼓成功了,分享給大家一下

Note: 只是簡單的基礎版本的,這個支持的是沒有使用 Cocoapods 的工程,,腳本見iOS 自動打包_shell 腳本;如果是使用 Cocoapods 工程的,可以稍微修改一下,鼓勵大家自己試試,試好了順便分享給我,😉

使用方法:

iOS 自動打包 - sh 的使用:下載壓縮包後,解壓,裡面有後綴為.sh 的文件和.plist 的文件,將這兩個文件放到
.xcodeproj 所在的文件夾下,然後 ProjectName 和 SchemeName,打開 terminal,運行這個.sh 文件即可。

然後來說一下調試中遇到的問題:

  1. 文件路徑的問題
  2. Scheme 的問題,我不知道自己的 sheme 是什麼?或者我的 sheme 明明就是這個但是提示我找不到
  3. 腳本運行完,發現所有的文件都變成 Modified 狀態,整個人頓時就不好了。。。

問題一:路徑的問題#

因為是 shell 腳本,偶會的本來就不多,週五那天智商爆表,居然啃懂了其中幾句,然後還知道去找度娘,所以被我改成功了,
這個腳本路徑被設置為.xcodeproj 所在的文件夾,
打包的.xcarchive 文件放在這個文件夾下的.build 文件夾下,
導出的 ipa 文件在桌面

問題二:Scheme 的問題#

不知道自己的 Scheme 是什麼的,可以去 Product->Scheme->Edit Scheme 下查看
Scheme 查看 1

或者直接運行腳本會打印出來
Scheme 查看 2

寫了自己的 Scheme 但是運行腳本後報這個錯的
No Schemes img

要注意一下 Edit Scheme 界面的 shared 要勾選
Fixed No Schemes

腳本運行完,所有文件變為 Modified 狀態#

使用 git diff 查看了之後,發現是 filemode 的變化

文件 chmod 後其文件某些位發生了變化,如果嚴格比較原文件和 chmod 後的文件,兩者是不一樣的,但是源代碼通常只關心文本內容,因此 chmod 產生的變化應該忽略

上面的是找度娘之後,找到的博客裡介紹的,請原諒,忘記當時怎麼搜的了,所有找不到出處,文字是當時截圖。。。。。
輸入 git config core.filemode false,之後就好了

代碼分析#

  • 變量聲明

Implement Var
project_path 是獲取此腳本文件所在的目錄,百度搜出來的Linux - 獲取當前正在執行腳本的絕對路徑
project_name 是.xcodeproj 前面的文字
scheme_name 是前面說的那個
build_path 是當前路徑下 build 文件夾
exportOptionsPlistPath 是 plist 文件的路徑
exportFilePath 是導出.ipa 包的路徑

  • 打印 scheme、清理工程、編譯工程、打包

Run Code

  1. 打印 scheme,如果不知道怎麼獲取 scheme_name,可以先填上上面的 project_name,註釋掉下面所有的代碼,運行,就會打印出來當前 project 的 scheme
  2. 清理工程,編譯之前先 clean 一下。。。。
  3. 編譯工程,編譯並生成.xcarchive 文件,放在 build_path 下,名字是 project_name.xcarchive,這一步最為耗時
  4. 打包,將生成的.xcarchive 文件導出.ipa 包到桌面

這裡面每一步都可以單獨執行,例如想獲取 shceme 就註釋掉其他幾段代碼;想測試編譯通過沒,就只保留清理、編譯這段;編譯成功,導出失敗,就只保留導出這一段,修改測試

  • 判斷導出是否成功

Is Export Success
判斷桌面是否有 scheme_name.ipa 文件,有的話,就視為打包成功,打開這個文件夾;

後記#

a. 如果是 workspace 工程,可按照這裡這個鏈接,修改清理工程、編譯工程、打包這幾步

xcodebuild-developer.apple

這就是上面鏈接裡的內容,xcodebuild 的使用都在這裡
xcodebuild

b. .plist 文件裡的內容可參照這個鏈接,需要翻牆
xcodebuild's new exportOptionsPlist flag

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。