文件libswiftCore.dylib没有正确的代码签名

时间:2019-06-13 07:40:55

标签: ios swift build chromium gn

我知道这个问题被问了很多次,人们提出了许多解决方案。就我而言,我已经尝试了所有这些。我试过的是 仅供参考:我不能使用xcode进行构建。 原因:我正在开发所有使用GN构建系统构建的Chrome ios代码。

  • 创建了SwiftSupport文件夹并将其作为ipa文件的一部分。
  • 还在我的框架和SwiftSupport文件夹下签署了Dylib。
  • 使用通过终端验证的相同身份对完整的应用程序进行签名。

有人知道苹果还需要签名吗? 欢迎使用更多故障排除步骤。

1 个答案:

答案 0 :(得分:1)

我已解决此问题,让我总结一下并使其对遇到此问题的每个人有所帮助,这是一些故障排除步骤。

  • 在我的情况下,我通过一些脚本更改了XCode构建设置,如果您使用某个构建系统来制作XCode项目,则将swift embed库始终添加为YES,否则可以转到XCode构建设置并设置一个标志到是

  • 将您的IPA更改为.zip,然后解压缩,应该有项目需要的SwiftSupport文件夹,例如SwiftSupport / iphoneos /所有dylib库。

  • 如果不存在Swift Support文件夹,那么您必须创建swift support文件夹,并通过终端使用某些命令添加IPA,对于我来说,我就是这样。 zip -r selected_your_ipa_name.ipa Payload SwiftSupport,Payload文件夹将包含.app文件,SwiftSupport文件夹将包含.dylib,就像该层次结构SwiftSupport / iphoneos / *。dylib

  • SwiftSupport文件夹库应使用Apple证书而不是您的证书进行代码签名。要使其工作,只需从以下路径复制.dylib:“ / Applications / Xcode.app / Contents / Developer / Toolchains / XcodeDefault.xctoolchain / usr / lib / swift / iphoneos /”

  • 此框架文件夹下的库Payload / Framework / .dylib库应由您的证书签名。

现在非常重要的一点不容错过

  • 使用lipo -info path_of_dylib检查Payload / Framework / *。dylib下您的库的体系结构信息,如果它包含框架arm64e,则以某种方式删除此拱门,这将不起作用,我也不知道原因(如果有人知道,也请让我知道。)然后,该代码使用相同的代码身份对您的lib进行签名。

    • 以这种方式使用终端再次使用.ipa文件。 zip -r your_app_name.ipa Payload SwiftSupport,请确保这些目录没有冲突。DS_Store隐藏文件,如果退出,则在制作ipa之前将其删除。

希望这些故障排除步骤有效:)如果我有任何遗漏,抱歉:)如果您想进行更多讨论,请通过电子邮件或在此处发表评论让我知道。 mshauket.developer@gmail.com