簡體   English   中英

構建多個體系結構的框架(arm64,armv7,armv7s)

[英]Build framework for multiple architectures (arm64, armv7, armv7s)

我正在嘗試將針對arm64,armv7和armv7s的項目構建上傳到TestFlight。 它正在使用另一個項目的框架。 但是frameowork看起來只是為arm64構建而不是arm64( file was built for arm64 which is not the architecture being linked (armv7) )。

問題是如何使框架包含所有體系結構? 我希望將項目分開。 而且我不關心模擬器。 我想確保它是為發布而構建的。

這是框架目標:

在此輸入圖像描述

編輯:我的項目是基於Cordova。 所以它使用的是一個使用預構建框架的插件。 有指令用於構建一個包含模擬器和設備的胖框架,然后將它與lipo連接起來。 我需要的是我沒有的設備架構。 這是否意味着我需要arm64,armv7和armv7s中的三個設備才能將它們完全連接起來?

Apple已停止在iOS 11中支持32位。您既不能在iOS 11上運行32位應用程序,也不能在32位處理器上運行iOS 11。 因此,您必須將部署目標設置為適用於您的框架的iOS 11之前的iOS版本。

您可以嘗試創建聚合目標並編寫一個支持所有平台的腳本。 這是我的一個項目的示例腳本。

unset TOOLCHAINS #Xcode 7.3 BUG FIX  http://stackoverflow.com/questions/36184930/xcodebuild-7-3-cant-enable-bitcode

# define output folder environment variable

C_PROJECT_NAME="<<YOUR_FRAMEWORK_NAME>>"

UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal

# Step 1. Build Device and Simulator versions
xcodebuild -target <<YOUR_FRAMEWORK_NAME>> ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"

xcodebuild -target <<YOUR_FRAMEWORK_NAME>> ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator -arch i386 -arch x86_64 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"

mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"

rm -rf ./${C_PROJECT_NAME}.framework
cp -R ${BUILD_DIR}/${CONFIGURATION}${EFFECTIVE_PLATFORM_NAME}/${C_PROJECT_NAME}.framework ./

# Step 2. Create universal binary file using lipo

lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}"

mv ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME} ./${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM