由于新的安全性,Catalina 升级后无法使用旧的 NDK (android-ndk-r17c)

Cannot use old NDK (android-ndk-r17c) after Catalina upgrade due to new security

升级到 macOS Catalina 后,我的项目将无法再构建。这是因为 Catalina 认为 'android-ndk-r17c' 中的二进制文件不是来自受信任的开发人员。

您会收到如下消息: “无法打开“ld”,因为无法验证开发人员。” "macOS cannot verify that this app is free from malware"

由于本机 openCV 库 SDK 和较新的 NDK 存在问题,我不得不使用旧的 NDK。他们正在努力,但较新的 SDK 对我来说还不够稳定。

通过转到安全窗格并单击安全警报上的 "Allow Anyway",我能够绕过 "clang" 和 "clang++" 无法工作。但是,当使用 "Id" 尝试此操作时,我可以通过单击 "Allow Anyway" 来克服第一个警告,但它似乎随后被调用,并且在随后的调用中我没有允许它打开的选项。

真的没有代码。我只是(并且已经有很长一段时间了)Android Studio NDK 参考通过配置指向旧的 NDK。

在来自 NDK 的 IDE 中,无法加载 "Id":

“无法打开“ld”,因为无法验证开发者。" "macOS cannot verify that this app is free from malware"

我刚刚找到了解决方案。

这是一个乏味的过程,但是:

  1. MacOS:打开系统偏好设置
  2. MacOS:转到“安全和隐私”(保持此打开状态,您将在整个过程中需要它)
  3. Unity:去构建你的项目。出现错误时单击 "Cancel"
  4. MacOS:在安全和隐私中 window - 去点击 "clang" 错误附近的 "Allow" - 这样 MacOS 系统就会识别并使用该应用程序。
  5. 错误会再次出现,但这次会要求你"Open"它。单击 "Open"
  6. 由于各种依赖关系,构建将失败几次,但它会失败,因为您需要像前面的步骤一样允许不同的文件。
  7. 再次构建您的项目。
  8. 如果失败,请重复上述步骤,直到不再失败。文件未被识别的每一个错误每次都会不同

要允许在 MacOs Catalana 上从任何地方下载应用程序,请执行以下操作:

sudo spctl --master-disable

我想补充 Mudassar Ashraf 的回答。

如果在单击“取消”后没有看到“允许”选项,请在“安全”中切换“允许从以下位置下载的应用程序” window «App Store 和确定的开发者»。这将以某种方式使 «Allow» 按钮出现。然后将其切换回 «Anywhere»。如有必要,请重复。

如果出于某种原因在您的 安全和隐私 window 按钮 allow 中没有出现,那么只需将您的 ndk 移动到不同的目录并再次尝试整个过程。

在 ndk 目录 (ndkpath/toolchains/llvm/prebuilt/darwin-x86_64/bin/) 中找到您的 clang++ 程序,然后右键单击并打开

现在有更好的解决方法。

您可以转到“安全与隐私”,打开 Developer Tools 并将您的终端应用程序添加到工具列表中。您的 IDE.

也可以这样做

解决方法上面已经说了。转到终端和 运行 此代码以允许来自“任何地方”的应用程序,并在安全性中确保选择“任何地方”。这将防止询问您 100 次是否允许从 xxx 下载 xxx 文件以及多次构建失败。

sudo spctl --master-disable