ios .a和.framework

來源:互聯網
上載者:User

標籤:arch   res   複製   pen   settings   tar   run   檔案   frame   

建立Aggregate來合并模擬器和真機通用的framework

然後在Build Phases下New Run Script Phase建立合并指令碼:

# ConstantsSF_TARGET_NAME=${PROJECT_NAME}#自訂的用來存放最後合并的frameworkUNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal#IPHONE_DEVICE_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneosWORKSPACE_NAME=${PROJECT_NAME}.xcworkspaceYO_SCHEME=${PROJECT_NAME}#clean build是先清除原來的buildxcodebuild -workspace ${WORKSPACE_NAME} -scheme ${YO_SCHEME} -sdk iphonesimulator -configuration"${CONFIGURATION}"clean buildxcodebuild -workspace ${WORKSPACE_NAME} -scheme ${YO_SCHEME} -sdk iphoneos -configuration"${CONFIGURATION}"clean build# build project#xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk iphoneos BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}/arm64" SYMROOT="${SYMROOT}" ARCHS=‘arm64‘ VALID_ARCHS=‘arm64‘ $ACTION#xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk iphoneos BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}"  CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}/armv7" SYMROOT="${SYMROOT}" ARCHS=‘armv7 armv7s‘ VALID_ARCHS=‘armv7 armv7s‘ $ACTION# Copy the framework structure to the universal folder (clean it first)#因為framework的合并,lipo只是合并了最後的二進位可執行檔,所以其它的需要我們自己複製過來#先移除原來的rm -rf "${UNIVERSAL_OUTPUTFOLDER}"mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework"#合并模擬器和真機的架構lipo -create  "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}""${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"-output"${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}"open "${UNIVERSAL_OUTPUTFOLDER}"

對於以上的指令碼,其中用到了很多的 xcode預定義的變數,這些變數怎麼來的呢?你可以在命令列下, 輸入

xcodebuild -workspace YohunlUtilsLib.xcworkspace -scheme YohunlUtilsLib -sdk iphonesimulator -configuration Debug -showBuildSettings > xcodebuild_showBuildSettings.txt

來將所有的xcode預定義變數都匯入到文本xcodebuild_showBuildSettings.txt 中,然後你就可以選用你需要的啦

當然了,我們一般都應該合并release模式的,而不是debug模式的framework

 

查看.framework的資訊:

lipo -info aa.framework/aa

顯示:

Architectures in the fat file: aa.framework/aa are: armv7 arm64

說明我們產生的真機framework:aa.framework 包含了兩種架構 armv7 arm64

分離架構(以分離armv7為例)

  目前的目錄建立檔案夾,用於存放分離後的架構,和分離出的.o檔案

mkdir armV7

分離出armv7架構到檔案夾armV7下:

lipo aa.framework/aa -thin armv7 -output ./armv7/aa_armv7

分離armv7架構所有的.o檔案

cd armV7ar -x aa_armv7

 

ios .a和.framework

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.