应用程序安装失败。找不到代码签名

App Installation failed. No code signature found

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

但是,当我在个人phone上尝试运行ning时(运行ning iOS 12.0 GM)我运行在安装时出现错误如标题中所述的应用程序。

我知道在 SO 和 Internet 上有关于此主题的 of already answered questions,但是我无法使其中任何一个起作用。

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

以下是我迄今采取的尚未奏效的步骤(也许它们将来对其他人有用!):

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

任何帮助将不胜感激:)

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

还尝试使用相同的包 ID 签署一个空项目,但效果很好。因此,问题要么出在我们的第 3 方框架中,要么出在 t运行 从 Xcode 9.4 迁移时启用的一些奇怪的设置。将开始一个一个地删除第 3 方框架,直到我可以编译它。

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

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

更新 3:所以我能够通过在构建阶段注释掉 carthage copy-frameworks 脚本(和 cleaning/nuking这样做后得出的数据)。当然,这意味着它会在启动时崩溃,因为它缺少这些框架,但这确实意味着问题出在 carthage 或其中一个链接的 carthage 框架上。不是我们的签名证书、配置文件或代码库。将尝试一个一个地删除这些框架,我会在这里更新。

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

不确定这是否也是您的情况,但我最近在尝试 运行 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=()
# ...

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

Invalid Signature - A sealed resource is missing or invalid. The file at path [xxxx.app/xxxxx] is not properly signed.

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

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

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

想通了:

我 运行 解决了迦太基的这个问题:https://github.com/Carthage/Carthage/issues/2472 并使用了他们建议的设置 EXPANDED_CODE_SIGN_IDENTITY='' 的解决方案,当时我 运行 xcode10.

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

就我而言,我遇到了无效的 iPhoneXS 条款和捆绑包标识符冲突。我的项目是在 Xcode 升级后尝试的,并说附加了新的 phone。完成上述步骤后(完全重新创建钥匙链和配置文件,删除持久文件夹等...)。

目标项目设置:

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

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

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

在项目目标的构建 phases/Carthage 中,像这样放置 carthage 命令:

EXPANDED_CODE_SIGN_IDENTITY='' carthage copy-frameworks

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

我已经尝试了此线程中的所有方法,但没有任何效果。所以我刚刚重新安装 Xcode 突然一切都恢复正常了。

对我来说,这是我的 Carthage 框架代码标志。 我通过像这样设置它们来修复它:

摘要:

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

详情:

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

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

结果完全是invalid/not-working.

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

猜测,我的问题与开发者Bundle-identifier注册异常延迟有关。

但最后,事情仍然没有明确的原因就坏了。

--更新--

我在另一个项目中又遇到了这个问题

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