架构 arm64 的未定义符号:Xcode 12

Undefined symbols for architecture arm64: Xcode 12

我试图在添加第 3 方框架后构建项目,但是在添加框架后我无法编译项目,我得到 Undefined symbols for architecture arm64: error when我尝试在设备上编译,但我可以在模拟器上编译。我已经尝试了我在 Whosebug 上找到的所有其他解决方案。感谢您的帮助!

这是我尝试过的:

None 我尝试过的解决方案对我有用。

Undefined symbols for architecture arm64:
      "_OBJC_CLASS_$_*", referenced from:
          objc-class-ref in frameworkName.o
    ld: symbol(s) not found for architecture arm64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

尝试将其添加到您的 pod 文件

post_install do |installer|
      installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
          config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
          end
        end
    end

我发现了问题。

我的项目支持比框架更低的最低部署目标,这导致了这个问题。我必须包含从特定 iOS 版本开始的框架。

这是场景和问题:我的项目支持 iOS 9,框架支持从 9.1 开始。出于这个原因,我没有获得最新的框架,而是 Cocoapods 下载了不支持 arm64 的旧版本框架。

所以暂时我只包含了 iOS 9.1 及更高版本的框架:

platform :ios, '9.1'
      pod 'PodName', '~> 3.2'

然后项目编译正常,感谢那些试图提供帮助的人。为此我花了半天时间,我把它放在这里供可能遇到同样问题的任何人使用。

忘记可能会影响其他开发的应用程序的复杂答案,因为您更改了 XCODE 内部。

根据我的经验,发生这种情况是因为您更新版本时会复制项目,这是最简单的方法。

在 BUILD SETTINGS 选项卡中将“启用模块(C 和 Objetive -C)”参数设置为 YES 后问题就解决了。

我还建议比较 BUILD SETTINGS 参数(有很多但比重建项目要快...我不明白为什么 Apple 把它弄得这么复杂) beetween projects than work ok.

  1. “产品”->“方案”->“编辑方案”
  2. select“构建”
  3. 取消选中“并行构建”

有很多可能的原因,最后的armv7版本停留在iOS10。 所以对我来说:

我尝试使用没有 'armv7' 的“有效架构”,Xcode 12 中不再存在。

接下来我尝试了 ONLY_ACTIVE_ARCH,我知道这将导致我最终无法存档我的应​​用程序

最后,我搜索了我本地的 podspec,找到了

    s.ios.deployment_target = "10.0"

由于我的主应用程序的最小部署目标设置为 iOS11。所以我设置

    s.ios.deployment_target = "11.0"

Xcode 不再抱怨这个 armv7。

希望这会对某人有所帮助,检查您的框架或任何依赖项,确保它们设置正确。

我发现将有此错误的文件的目标成员设置为目标很有帮助。单击产生此错误的文件,Xcode 右侧有检查器。在检查器中显示目标成员资格。如果文件当前不属于您想要的任何目标成员 select。