在Xcode中從動態(tài)庫剝離不需要的架構(gòu)

自從iOS 8發(fā)布以來,開發(fā)人員已經(jīng)能夠利用動態(tài)庫對iOS開發(fā)的好處。對于一般開發(fā),為所有需要的架構(gòu)設(shè)置一個單一的動態(tài)庫是非常好的,所以您可以在所有設(shè)備和iOS模擬器上運行,而無需更改任何東西。然而,這種方法有一個缺點 - 因為它們在運行時鏈接,當(dāng)一個動態(tài)庫被單獨編譯到最終應(yīng)用程序時,不可能知道實際需要哪些架構(gòu)。因此,Xcode將在編譯時將整個事物復(fù)制到應(yīng)用程序包中。除了浪費的磁盤空間,理論上沒有真正的缺點。但是實際上,iTunes Connect不喜歡我們添加未使用的二進制切片:這時候,打包上傳Appstore會報如下錯誤:



那么,我們?nèi)绾谓鉀Q這個問題呢?
步驟如下:



在Build Phases中加入run script。在里面添加Shell腳本,
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
  FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
  FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"    
  echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"

   EXTRACTED_ARCHS=()

  for ARCH in $ARCHS
  do
    echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
    lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
    EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done

echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"

echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"
done

該腳本將查看您構(gòu)建的應(yīng)用程序的Frameworks文件夾,并確保只有您正在構(gòu)建的架構(gòu)存在于每個框架中。
好多了!現(xiàn)在我可以在我的項目中添加包含我所需要的所有架構(gòu)的胖動態(tài)庫,而我的構(gòu)建過程將會在任何給定的時刻處理哪些架構(gòu)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,013評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,551評論 19 139
  • 世事多紛擾,往來人素如, 生時赤條條,長成分貧富, 富者登高閣,貧者委塵土, 嫉之如仇惡,謾罵猶不足, 薄財乃我私...
    釋迦干屎橛閱讀 347評論 1 3

友情鏈接更多精彩內(nèi)容