iOS靜態庫開發中對Bitcode的支持


1.bitcode

bitcode是LLVM編譯器將C/C++/OC/Swift等前端變成語言編譯成多種不同芯片上的機器指令過程中的中間代碼。並且這個中間代碼是CPU無關的。

原本我們的APP里要包含多種支持CPU架構的代碼。支持Bitcode的優勢就是在提交store后,蘋果再動態生成相應CPU的APP版本,這樣每個版本的APP就相對小了很多。

相關bitcode的詳細介紹參看這篇文章:http://www.jianshu.com/p/f42a33f5eb61

 

2.SDK開發中bitcode的支持:

(1)通過在build setting中對OTHER_CFLAGS字段的release時添加-fembed-bitcode

 

(2)新建target,新建Aggregate,添加編譯規則如下:

# define output folder environment variable
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal

# Step 1. Build Device and Simulator versions
xcodebuild -target TARGETNAME ONLY_ACTIVE_ARCH=NO -configuration Release -sdk iphoneos  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
xcodebuild -target TARGETNAME -configuration Release -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"

# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"

# Step 2. Create universal binary file using lipo
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a"

# Last touch. copy the header files. Just for convenience
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/include" "${UNIVERSAL_OUTPUTFOLDER}/"

同時也這是將SDK中模擬器和真機編譯后的SDK包合並的方法。

在真機編譯時加上  OTHER_CFLAGS="-fembed-bitcode"  ,就能支持bitcode了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM