我正在尝试为 iOS 应用程序制作一个动态框架。感谢新版本的 Xcode (6),我们在创建新项目时可以选择 Cocoa Touch 框架,而不再需要添加聚合目标、运行脚本等来创建一个项目。我构建框架时没有任何问题。但是当我尝试在 iOS 应用程序中使用它时,我遇到了一些架构问题。
ld: warning: ignoring file /Library/Frameworks/MyFramework.framework/MyFramework, file was built for x86_64 which is not the architecture being linked (arm64): /Library/Frameworks/MyFramework.framework/MyFramework
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_MyFrameworkWebService", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ld: warning: ignoring file /Library/Frameworks/MyFramework.framework/MyFramework, file was built for x86_64 which is not the architecture being linked (armv7): /Library/Frameworks/MyFramework.framework/MyFramework
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_MyFrameworkWebService", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
好吧,我尝试更改框架项目和目标的设置(架构和仅构建有效架构和有效架构)。我对 iOS 应用程序项目做了同样的事情,但没有任何效果。我想有些事情我不明白。
例如,当我构建仅用于 i386(iOS 模拟器)的框架时,使用命令行进行检查
“xcrun lipo -info MyFramework”,我有一个问题
ld:警告:忽略文件 /Library/Frameworks/MyFramework.framework/MyFramework,文件是为 x86_64 构建的,这不是正在链接的体系结构(i386)...
如果有人可以帮助我获得一个适用于所有 iOS 架构(包括模拟器)的框架。
根据所有答复,在 raywenderlich.com 上发帖和gist由...制作克里斯·康威我想出了this.
执行以下步骤,我能够构建一个 Cocoa Touch 框架(包括 Swift 和 Objective-C 文件),其中包含模拟器和设备的所有架构:
- 在框架的项目中创建一个新的(聚合)目标
- 在“构建阶段”下选择“添加运行脚本”并复制以下内容这个文件
-
Select the 总体目标 in the Scheme选择下拉菜单
-
Build the target for the 综合方案
希望能帮助到你 :)
UPDATE:修复了要点中的错误,即步骤 #3 中的路径不正确。谢谢Tokuriku!!
UPDATE在 Xcode 7 和 8 中,单击“文件”>“新建”>“目标...”,然后选择“其他”组以选择聚合目标
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)