从Github下了一个Framework,打算手动生成framework动态库。
参考了下面这篇文章:
xCode6制作动态及静态Framework
将生成的.framework文件导入到自己的项目,并且添加了Embedded Binaries
完成后在需要调用的源文件加上import PKHUD
然后出现了问题:怎么也调用不了framework里明明是public的类、方法、属性
经过反复的尝试,发现了原因:
# 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}"
用脚本合并模拟器和真机的framework时调用了lipo命令。在以前制作.a静态库的时候确实只要这句话即可,但是.framework文件中包含了module文件,lipo命令并不会合并两个文件夹中的文件。
可以看到只有arm和arm64的module,而模拟器却需要i386和x86_64的module,所以才会调用不了。
将Release-iphonesimulator\XXX.framework\Modules\XXX.swiftmodule中的i386和x86_64的文件拷贝到合并后的framework相应路径,问题解决。