【问题标题】:App Installation failed. No code signature found应用安装失败。未找到代码签名
【发布时间】:2019-02-21 17:28:14
【问题描述】:

我最近升级到 Xcode 10 并开始更新我们的应用程序以切换 4.2 在重建 3rd 方框架并添加解决各种问题的一天左右之后,我能够在新的模拟器上运行我们的应用程序。

但是,当我尝试在我的个人手机(运行 iOS 12.0 GM)上运行时,我在安装应用程序时遇到了错误,如标题中所述。

我知道在 SO 和 Internet 上有关于此主题的 lotalready answered questions,但是我无法让其中任何一个工作。

它已经阻止了我大约一天半,所以我想知道是否有人对如何缓解这种情况有任何见解。

以下是我迄今为止采取的尚未奏效的步骤(也许他们将来会为其他人工作!):

  1. 清除派生数据
  2. 删除并重新下载我计算机上的所有配置文件
  3. 清理构建目录(cmd + k & cmd + shft + k)
  4. 从我的手机中删除原始应用程序
  5. 重新启动 Xcode(版本 10.0 (10A254a) [GM])
  6. 重新启动我的 Mac(运行 macOS High Sierra 的 Macbook Pro 2018)
  7. 重新启动我的设备(运行 iOS 12.0 GM 的 iPhone X)
  8. 上述多种组合,包括一次全部组合
  9. 为 developer.apple.com 上的应用重新生成配置文件(我们使用手动签名)
  10. 为 developer.apple.com 上的应用删除和重新创建配置文件
  11. 为蒂姆·库克献祭了一只山羊
  12. 确保签名证书与配置文件匹配
  13. 从我的计算机中删除旧版本的 Xcode 并确保命令行工具在 xcode 10.0 gm 版本上
  14. 删除并重新安装 Xcode 10.0 GM
  15. 确保所有复制的框架都检查了code sign on copy
  16. 使用 swift 4.2 编译器通过 Carthage 重建所有框架(请记住,这一切都适用于模拟器)。
  17. Ensured code signing required is set to YES in the SDKSettings.plist
  18. 删除了我计算机上的所有旧签名证书
  19. 在 developer.apple.com 上删除并重新创建了证书
  20. 已将我的设备删除并重新添加到 developer.apple.com
  21. 将代码签名从手动更改为自动
  22. 确保签名证书是Developer 而不是Distribution

任何帮助将不胜感激:)

更新:我尝试在新机器上重新下载和重建,但出现了同样的问题。有趣的是,我可以很好地归档和验证应用程序。

还尝试使用相同的捆绑 ID 签署一个空项目,并且效果很好。所以问题出在我们的第 3 方框架中,或者在从 Xcode 9.4 转换时启用的一些奇怪的设置中。将开始一一删除 3rd 方框架,直到我可以编译为止。

更新 2:仍然没有运气。尝试清除大多数框架,但什么也没有。以下是设备日志,想知道Skipping a profile because of error 0xe8008012是否与它有关:

https://gist.github.com/joshuawright11/6889ce1a0872262df77f97d63830baa5

更新 3:所以我能够通过在构建阶段注释掉 carthage copy-frameworks 脚本(并在这样做之后清理/核对派生数据)来安装它。当然,这意味着它会在启动时崩溃,因为它缺少这些框架,但这确实意味着问题出在 carthage 或链接的 carthage 框架之一。不是我们的签名证书、配置文件或代码库。打算一一删除这些框架,我会在这里更新。

最终更新终于弄明白了。结果证明这个解决方案非常小众(见下文),但希望这个问题可以作为互联网上与此问题相关的每个解决方案的汇编哈哈。

【问题讨论】:

  • 您可以创建新项目,设置损坏项目的捆绑包 ID 并配置您的签名身份,然后尝试在设备上运行它。如果它会运行 - 问题很可能在框架中。顺便说一句,您是否尝试在另一台机器上克隆您的存储库?
  • 好主意,我会尝试并在稍后报告
  • @lobstah 知道如何查看可能导致此问题的框架吗?
  • 首先,我会尝试在另一台机器上启动您的应用程序 - 这是找出问题所在(在项目本身或您的环境中)的最简单方法。它会为你节省很多时间。如果它会在另一台机器上运行,那么问题出在环境中。在这种情况下,检查你的依赖管理器(Carthage)——清理它的缓存,更新 Carthage,删除项目中除了 Cartfile 之外的所有内容,然后执行carthage update。如果项目本身的问题 - 你需要审查你的框架。如果只是审查框架没有运气 - 删除它们并尝试运行项目
  • @Josh,我找到了导致问题的原因,但仍然不确定为什么会出现错误。我在嵌入式框架之后的构建阶段中有这个运行脚本:ikennd.ac/blog/2015/02/… 如果我删除它安装在设备上的那个脚本。

标签: ios xcode code-signing xcode10 ios12


【解决方案1】:

想通了:

我在 carthage:https://github.com/Carthage/Carthage/issues/2472 上遇到了这个问题,当我将内容转移到 xcode 10 时,我使用了他们建议的设置 EXPANDED_CODE_SIGN_IDENTITY='' 的解决方案。

显然这一行是导致 carthage 在复制框架时伤害自己的原因,从而导致错误。我下载了最新版本的 carthage 来解决这个问题,然后删除了 EXPANDED_CODE_SIGN_IDENTITY='' 行,一切正常。真是浪费时间。

【讨论】:

    【解决方案2】:

    不确定这是否也是您的情况,但我最近在尝试在 iPhone 上运行 React Native 应用程序时也遇到了这个错误。它在我集成Lottie library for React Native 后开始发生

    此问题是由在构建阶段中添加的此运行脚本引起的:http://ikennd.ac/blog/2015/02/stripping-unwanted-architectures-from-dynamic-libraries-in-xcode/。该脚本未能从 Lottie.framework 中提取架构并给出 "input file (.../Lottie.framework/Lottie) must be a fat file when the -extract option is specified

    为了解决这个问题,我在脚本中添加了一个验证以跳过非胖文件:

    # ...
    echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
    
    if lipo -info "$FRAMEWORK_EXECUTABLE_PATH" | grep -iq "Non-fat file"
    then
    echo "This is a non-fat file, skipping"
    continue
    fi
    
    EXTRACTED_ARCHS=()
    # ...
    

    【讨论】:

    • 感谢@mihai1990 的回复;我们不使用本机反应,但我怀疑它确实与我们一直在使用的 3rd 方库有关。最终花了一整天时间将所有内容恢复到 Xcode 9.4 并暂时使用它;周末我会更深入地研究 Xcode 10 构建,看看 3rd 方库中是否有任何构建脚本会伤害自己。我会在这里发布结果。
    • @Josh 从那以后你有结果吗?
    • 是的,@LouisCAD 它原来是我使用的自定义迦太基构建脚本,请参阅下面的选定答案
    【解决方案3】:

    对我来说,这是我的 Carthage 框架代码标志。 我通过将它们设置为如下图来修复它:

    【讨论】:

      【解决方案4】:

      我在使用 xcode 10.0 (10A255) 时遇到了同样的问题。

      无效签名 - 密封资源丢失或无效。路径 [xxxx.app/xxxxxx] 处的文件未正确签名。

      xcode 9.4.1 (9F2000) 始终能够毫无问题地提交应用程序。

      我可以解决问题,删除所有支持文件(txt、json、rtf、html、ttf 等),然后再次添加它们。

      我建议您提交没有文件的构建。如果可行,您可以逐步再次添加它们

      【讨论】:

      • 嗯,好主意,但没有骰子。删除了所有字体和资产并得到了同样的错误。
      【解决方案5】:

      在我的情况下,我的 iPhoneXS 配置无效和捆绑标识符冲突。我的项目是在 Xcode 升级后尝试的,并说连接了新手机。完成上述步骤后(完全重新创建钥匙链和配置文件,删除永久文件夹等......)。

      关于目标项目设置:

      1. 将包标识符从 com.proj.app 设置为其他任何内容,例如:com.proj.app2
      2. 将产品名称从 Product 更改为 Product123

      我很确定只有捆绑标识符冲突阻止了我的设备正常自动进入配置的设备。

      1. 将标识符改回正常状态(如果需要)

      【讨论】:

        【解决方案6】:

        我已经尝试了此线程中的所有内容,但没有任何效果。所以我只是重新安装了 Xcode,突然一切都恢复了。

        【讨论】:

          【解决方案7】:

          在项目目标的构建阶段/Carthage 中放置 carthage 命令,如下所示:

          EXPANDED_CODE_SIGN_IDENTITY='' 迦太基复制框架

          这只是解决获取环境变量问题的临时解决方案。

          【讨论】:

            【解决方案8】:

            摘要:

            问题解决了,等了一晚,什么都不做。

            详情:

            App Installation failed. No code signature found昨天折磨了我一下午,

            我尝试了所有方法: “构建设置、框架设置、缓存目录、签名设置、清理、重新初始化、重新 git-clone、cocopods clean 等。”

            结果证明它们完全无效/不工作。

            所以,我下班回家了。睡个好觉后,早上一切正常。

            ,我的问题与开发人员 Bundle-identifier 注册中的异常延迟有关。

            但最后,事情仍然没有明确的原因中断和工作。

            -- 更新--

            我在另一个项目中再次遇到这个问题。

            通过将所有导入的框架包含为当前项目的目标来快速修复它,而不是将外部框架作为子项目导入

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-11-17
              • 1970-01-01
              • 1970-01-01
              • 2013-05-17
              • 1970-01-01
              • 1970-01-01
              • 2017-08-21
              • 1970-01-01
              相关资源
              最近更新 更多