這是可能的,因爲我目前正在開發的Xcode 8
我這樣做,是建立一個總目標(跨平臺)的方式在iOS上,watchOS通用框架和tvOS並添加在構建階段運行腳本。該腳本基本上編譯爲iphonesimulator iOS的目標和的iPhoneOS
此之後,它會創建一個新的二進制合併兩者(脂 - 創建 - 輸出)
你介意發佈您的當前構建腳本生成一個通用框架所以我可以指導你做錯了什麼?
考慮到腳本在這裏不是你的問題,你的問題可能是設置你的有效體系結構,你的體系結構,甚至你如何簽署目標。我現在推薦在未選中目標的常規設置中保留「自動管理簽名」選項,並手動設置配置配置文件和證書。
運行腳本:在考慮
#!/bin/sh
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}/iOS"
# Step 1. Build Device and Simulator versions on iOS
xcodebuild -workspace "${PROJECT_NAME}.xcworkspace" -scheme "${PROJECT_NAME}" -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 6' clean build
xcodebuild -workspace "${PROJECT_NAME}.xcworkspace" -scheme "${PROJECT_NAME}" -sdk iphoneos clean build
# Step 2. Copy the framework structure (from iphoneos build) to the universal folder
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/iOS"
# Step 3. Create universal binary file using lipo and place the combined executable in the copied framework directory
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/iOS/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"
# Step 4. Convenience step to copy the framework to the project's directory
mkdir -p "${TMPDIR}/${PROJECT_NAME}/Frameworks/iOS"
cp -R "${UNIVERSAL_OUTPUTFOLDER}/iOS/${PROJECT_NAME}.framework" "${TMPDIR}/${PROJECT_NAME}/Frameworks/iOS"
# Step 6. Create .tar.gz file for posting on the binary repository
cd "${TMPDIR}"
# We nest the framework inside a Frameworks folder so that it unarchives correctly
tar -zcf "${PROJECT_NAME}.framework.tar.gz" "${PROJECT_NAME}/Frameworks/"
mv "${PROJECT_NAME}.framework.tar.gz" "${PROJECT_DIR}/"
# Step 7. Convenience step to open the project's directory in Finder
#open "${PROJECT_DIR}"
採取我生成有源體系僅設置爲NO的生成設置,也有效的架構設置爲arm64,x86_64的,I386,ARMv7的,armv7s。架構是$ {ARCHS_STANDARD} armv7s。
我還設置了一個用戶定義的構建設置BITCODE_GENERATION_MODE位碼。有了這個構建設置,我確保生成啓用了位代碼的二進制文件。
這是一個完整的指南,我寫在這個問題上:https://eladnava.com/publish-a-universal-binary-ios-framework-in-swift-using-cocoapods/ –