xcodebuild批量打包之區分不同的渠道

2021-06-28 12:55:34 字數 1318 閱讀 9848

之前有寫過《最近研究xcodebuild批量打包的一些心得》因為當時已經研究過乙個工程多target,所以在多target的基礎上,很容易按照target名字進行打包,於是建立了一堆的target以後,然後寫了乙個指令碼批量打包。然後想著以後打包省事兒,直接指令碼一執行,走你。結果今天需要再打一批包,拿到列表以後一看發現:新加了幾個渠道,去掉了幾個渠道。哎呀,媽呀,這個列表咋還是變的呢?這麼一來,我可以不用刪除多餘的target,但是需要新建target呀,細想一下發現:我新建target只是為了加乙個變數,用來區分這個target,那麼我可不可以直接以渠道名為引數傳給xcodebuild然後就自動生成不同的target呢?

說幹就幹,先前查資料的時候,有看到說可以給xcodebuild傳引數的:

xcodebuild -sdk *** -target *** symroot=*** api_type=1

api_type就是要識別的macro嘍,果斷換成自己的區別標識,一通編譯打包以後,發現:不好使!神馬情況呢?一通google以後發現有說用gcc_preprocessor_definitions可以。還是用上面的例子:

xcodebuild -sdk *** -target *** gcc_preprocessor_definitions="api_type=1"

發現這樣竟然是好使的,於是又用下面的語法試了試:

xcodebuild -sdk *** -target *** gcc_preprocessor_definitions="api_type=一"

xcodebuild -sdk *** -target *** gcc_preprocessor_definitions="api_type=a"

發現,這個macro只能用數字!也就是說,雖然你傳進去乙個api_type=1,而編譯器也只是在最開始執行編譯以前定義了乙個巨集:

#define api_type 1

而這麼定義法是只能用數字,不能用字母,更別提字串或者中文了。花了挺長的時間才學習到這個東東,那麼接下來就變得簡單了:

把所有的渠道擱到乙個靜態的陣列裡。然後通過每次傳入不同的序列號打成不同的渠道包唄。

到這裡,終於,可以由一堆target變回兩個target了(乙個用來作編譯打包時的模板;乙個自己測試時用)。

完整的**片段:

xcodebuild clean

xcodebuild -target iphone gcc_preprocessor_definitions="qudaonum=9"

iOS 使用xcodebuild自動打包問題記錄

近期我在使用 xcodebuild 自動打包指令碼遇到乙個問題 archive failed the following build commands failed phasescriptexecution cp embed pods frameworks users library develop...

了解 xcodebuild 命令 ,自動打包ipa

引用部落格 在 ios 開發中,如果需要把工程打包成 ipa 檔案,通常的做法就是在 xcode 裡點選 product archive 等待整個工程 archive 後,然後在自動彈出的 organizer 中進行選擇,根據需要匯出 ad hoc,enterprise 型別的 ipa 包。雖然 x...

ANT批量打包

android因為市場眾多,所以乙個版本發布的時候大家是怎麼進行的呢?我記得我問過乙個同行他告訴我說,他們三個人eclipse打包打一上午.這種方式也有它的優勢不過不在今天的討論範圍內 今天我們研究批量打包,以及批量打包的過程 暫時簡單記錄,隨後擴充 總體來說有這麼幾種 1 首先我們需要對ant這個...