目标:合并x86_64、arm64、armv7s
-
生成frameworks
Xcode->Targets->Build Settings
必做:
Architectures设置为:$(ARCHS_STANDARD)、arm64、armv7s
Valid Architectures设置为:arm64、armv7s、x86_64
可选:
Base SDK设置为:iOS
Supported Platforms设置为:iOS
Enable Bitcode:No
生成:
Device分别选择真机和模拟器,分别Bulid&Run,Xcode将生成arm版framework和simulator版framework -
拆分并合并
终端里分别对arm版framework和simulator版framework执行以下命令:
lipo xxx.framework/xxx -thin arm64 -output xxx.framework/xxx_arm64
lipo xxx.framework/xxx -thin armv7s -output xxx.framework/xxx_armv7s
lipo xxx.framework/xxx -thin x86_64 -output xxx.framework/xxx_x86_64
拆出对应指令集的子framework,再将子framework合并:
lipo -create xxx.framework/xxx_arm64 xxx.framework/xxx_armv7s xxx.framework/xxx_x86_64 -output xxx.framework/xxx
此时新的framework只有一个文件
注意:
再将arm版xxx.framework的除xxx文件意外的其他文件复制进新的framework里,并将simulator版framework里的Modules/xxx.swiftmodule里的文件复制进新的framework里的对应位置 -
重签名
可选:
新的framework使用时可能会报错,提示签名不一致,此时重新签名:
security find-identity -v -p codesigning
codesign -fs “iPhone Developer: xxxx (XXXX)” xxx.framework -
完成
工程里导入新的framework,分别在模拟器和真机上Build&Run,正常运行
完美~