5

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

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

有谁知道苹果还需要什么签名?欢迎更多故障排除步骤。

4

1 回答 1

1

我修复了这个问题,让我总结一下,对遇到这个问题的每个人都有帮助,这里有一些故障排除步骤。

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

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

  • 如果 Swift Support 文件夹不存在,那么您必须创建 swift support 文件夹并通过终端使用某些命令附加 IPA,就我而言,我确实喜欢这样做。zip -r selected_your_ipa_name.ipa Payload SwiftSupport ,Payload 文件夹将包含 .app 文件,而 SwiftSupport 文件夹将包含 .dylib 像这样的层次结构 SwiftSupport/iphoneos/*.dylib

  • SwiftSupport 文件夹库应该是苹果证书的代码签名,而不是你的证书。让它工作只需从这个路径复制.dylib“/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/”

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

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

  • 检查 Payload/Framework/*.dylib 下的库的架构信息,使用 lipo -info path_of_dylib ,如果它包含框架 arm64e ,请以某种方式删除此拱门,这不起作用,我也不知道原因(如果有人知道,请告诉我也知道)在该代码使用相同的代码标识签署您的库之后。

    • 像这样使用终端再次使用 .ipa 文件。zip -r your_app_name.ipa Payload SwiftSupport,确保这些目录不包含。DS_Store 隐藏文件,如果退出,请在制作 ipa 之前将其删除。

希望这些故障排除步骤能够奏效:) 如果我错过了什么对不起:) 如果您想进行更多讨论,请通过电子邮件或在此处发表评论告诉我。mshauket.developer@gmail.com

于 2019-06-14T03:51:01.897 回答