移动开发创建第一个库实践教程,由于公司业务需要,希望把原来直接加入到工程中的C++代码封装成库,供第三方使用。在这里做个总结:
创建动态库还是静态库# Sets the target folders and the final framework product.
如果工程名称和Framework的Target名称不一样的话,要自定义FMKNAME
\# 例如: FMK_NAME = "MyFramework"
FMK_NAME=${PROJECT_NAME}
\# Install dir will be the final output to the framework.
\# The following line create it in the root folder of the current project.
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
\# Working dir will be deleted after the framework creation.
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
\# -configuration ${CONFIGURATION}
\# Clean and Building both architectures.
xcodebuild -configuration "Release" OTHER_CFLAGS="-fembed-bitcode" -target "${FMK_NAME}" -sdk iphoneos clean build
xcodebuild -configuration "Release" OTHER_CFLAGS="-fembed-bitcode" -target "${FMK_NAME}" -sdk iphonesimulator clean build
\# Cleaning the oldest.
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
cp -R "${SIMULATOR_DIR}/" "${INSTALL_DIR}/"
\# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"
rm -r "${WRK_DIR}"
open "${INSTALL_DIR}"
存疑
存疑1:关于Mach-O Type的问题,默认是dynamic-Library,生成的.framework中包含可执行文件,看着跟其他第三方库中包含的是文稿类型的文件,不太一样,有些担心审核被拒。但是如果将其改为static-Library的话,脚本编译报错,无法正确生成framwork。