cocoa - Xcode 6 iOS 创建 Cocoa Touch 框架 - 架构问题

标签 cocoa ios8 xcode6 dynamic-library ios-universal-framework

我正在尝试为 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 架构(包括模拟器)的框架。

最佳答案

根据所有回复,post on raywenderlich.comgist创建者 Chris Conway我想出了this .

执行以下步骤,我能够构建一个 Cocoa Touch 框架(包括 Swift 和 Objective-C 文件),其中包含模拟器和设备的所有架构:

  1. 在框架项目中创建新的(聚合)目标
  2. 在“构建阶段”下选择“添加运行脚本”并复制 this file 的内容
  3. 方案选择下拉列表中选择聚合目标
  4. 聚合方案建立目标

希望有帮助:)

更新:修复了要点中的错误,其中步骤#3中的路径不正确。感谢Tokuriku !!

更新 在 Xcode 7 和 8 中,单击"file">“新建”>“目标...”,然后选择“其他”组以选择聚合目标

关于cocoa - Xcode 6 iOS 创建 Cocoa Touch 框架 - 架构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24039470/

相关文章:

xcode - 如何在 Swift 框架中使用 Objective C 类?

macos - 获取 OS X 上的型号标识符字符串

objective-c - 如何确定我是否是具有 buttonType NSSwitchButton 的 NSButton?

iphone - 在 iPhone/Cocoa 环境中打开到 HTTP 服务器的流连接?

objective-c - 从 Nib 加载菜单

objective-c - 应用程序在后台时,iPhone 手电筒不工作

uitableview - Swift 中的自定义 UITableViewCell 注册类

ios - UIScrollView Zoom 在 iOS 7 中不起作用,但在 iOS 8 中运行良好

ios - Swift 错误 - 调用 SimpleAuth 时的额外参数 'option'

c - 我在 Xcode 6 上安装 SDL2 时遇到困难