Swift引入Framework时无法访问public属性和方法

从Github下了一个Framework,打算手动生成framework动态库。

参考了下面这篇文章:
xCode6制作动态及静态Framework

将生成的.framework文件导入到自己的项目,并且添加了Embedded Binaries

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命令并不会合并两个文件夹中的文件

Module

可以看到只有arm和arm64的module,而模拟器却需要i386和x86_64的module,所以才会调用不了。

将Release-iphonesimulator\XXX.framework\Modules\XXX.swiftmodule中的i386和x86_64的文件拷贝到合并后的framework相应路径,问题解决。

你可能感兴趣的:(Swift引入Framework时无法访问public属性和方法)