iOS 动态库转静态库的配置

1.Build Settings配置编译设置

Link With Standard Libraries -> NO 

Mach-O Type -> Static Library

Dead Code Stripping -> NO

Enable Bitcode -> YES

STRIP_STYLE -> Debugging Symbols

Other C Flags 添加 -fembed-bitcode

DEPLOYMENT_POSTPROCESSING = NO (默认NO多余)

2.scheme配置成release

3.合成framework

方法1:

1、 framework可以生成真机和虚拟机2个不同的framewrok,不能互通使用,所以必须要将2个framework合并才可以。


2、在终端中输入一下命令

lipo -create 【模拟器打包path】 【真机打包path】 -output 【导出兼容版本path】

需要注意的是这个打包path指的是xxx.framework/xxx文件,而不是xxx.framework。导出的path是路径 + / + 文件名,比如我要放到桌面上,则路径应该是 /users/hzh/desktop/xxx


生成的xxx文件替换到真机path路径下xxx.framework,覆盖原来的xxx文件。

3、(敲黑板,划重点)如果你是swift,那么你还需要第四步才算完成,oc完成前面3步即可。将模拟器路径下xxx.framework/Modules/xxx.swiftmodule文件夹下的所有文件复制到真机path路径下xxx.framework/Modules/xxx.swiftmodule文件夹内。至此framework真机模拟机完成。


方法2:(推荐)

新建一个 Aggregate,并添加脚本


把下面的脚本复制到 Run Script 里面

# 如果工程名称和 Framework 的 Target 名称不一样的话,要自定义 FMKNAME

#FMK_NAME="HelloFrame"

FMK_NAME=${PROJECT_NAME}

# 导出临时目录

INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework

# 编译临时目录

WRK_DIR=build

DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework

SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework

# 编译设备和模拟器

xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos #clean build

xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator VALID_ARCHS="i386 x86_64" #clean build

# 清理临时目录

if [ -d "${INSTALL_DIR}" ]

then

rm -rf "${INSTALL_DIR}"

fi

mkdir -p "${INSTALL_DIR}"

cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"

cp -R "${SIMULATOR_DIR}/Modules/${FMK_NAME}.swiftmodule/" "${INSTALL_DIR}/Modules/${FMK_NAME}.swiftmodule/"

# 合并真机和模拟器编译结果

lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"

#导出到项目路径(改完Frame配置 再改PROJECT_DIR路径)

PROJECT_DIR="${HOME}/Documents/Soursetree/iOS/sample_mmjrxy_ios/MMFinancialSchool/Request" ###这里需要修改其他拷贝就好!!!###

rm -r "${PROJECT_DIR}/${FMK_NAME}.framework"

cp -R "${INSTALL_DIR}" ${PROJECT_DIR}/${FMK_NAME}.framework

open "${PROJECT_DIR}"

rm -r "${WRK_DIR}"

#open "${INSTALL_DIR}"

选中我们刚才创建的 Aggregate 这个 target,然后 Build,就可以坐等结果了。注意这里必须连手机。

你可能感兴趣的:(iOS 动态库转静态库的配置)