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

时间:2018-09-17 18:21:27

标签: ios xcode code-signing xcode10 ios12

我最近升级到Xcode 10,开始更新应用程序以切换至4.2,经过大约一天的重建第三方框架并添加了解决各种问题的方法,我得以在新的模拟器上运行我们的应用程序。

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

我知道在SO和Internet上有lotalready answered questions中的Ensured code signing required is set to YES in the SDKSettings.plist,但是我无法使其中任何一个起作用

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

这是到目前为止我没有采取的步骤(也许将来它们会为其他人使用!)

  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编译器通过迦太基重建所有框架(请记住,它们都可以在模拟器上运行)。
  17. https://gist.github.com/joshuawright11/6889ce1a0872262df77f97d63830baa5
  18. 删除了我计算机上的所有旧签名证书
  19. 在developer.apple.com上删除并重新创建的证书
  20. 已将我的设备删除并重新添加到developer.apple.com
  21. 将代码签名从手动更改为自动
  22. 确保签名证书是Developer而不是Distribution

任何帮助将不胜感激:)

更新:我尝试在一台新计算机上从头开始重新下载和重建,并且发生相同的问题。有趣的是,我可以很好地存档和验证该应用程序。

还尝试使用相同的捆绑软件ID签署一个空项目,并且效果很好。因此,问题可能出在我们的第3方框架中,或者是从Xcode 9.4过渡时启用的一些奇怪设置。开始逐个删除第3方框架,直到我将其编译。

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

{{3}}

更新3 :因此,通过在构建阶段注释掉carthage copy-frameworks脚本(并在执行此操作后清理/核对派生数据),我能够安装它。当然,这意味着它会因为缺少那些框架而在启动时崩溃,但这确实意味着问题是与迦太基或链接的迦太基框架之一有关。不是我们的签名证书,配置文件或代码库。尝试一一删除那些框架,我将在这里进行更新。

最终更新终于弄清楚了。解决方案原来是很合适的(见下文),但是希望这个问题可以作为互联网上与该问题相关的每个解决方案的汇总。

8 个答案:

答案 0 :(得分:7)

想通了:

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

很明显,这行是在复制框架时导致迦太基自身受伤并导致错误的原因。我下载了最新版本的迦太基来解决此问题,然后删除了EXPANDED_CODE_SIGN_IDENTITY=''行,一切正常。真是浪费时间。

答案 1 :(得分:5)

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

答案 2 :(得分:4)

对我来说,这是我的迦太基框架代码的标志。 我通过设置像这样的图片来解决它:

enter image description here

答案 3 :(得分:3)

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

  

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

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

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

我建议您提交不包含文件的构建。如果可行,您可以逐步添加它们

答案 4 :(得分:1)

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

关于目标项目设置:

  1. 将com.proj.app中的捆绑包标识符设置为其他任何值,例如com.proj.app2
  2. 将产品名称从Product更改为Product123

我敢肯定,只有软件包标识符冲突会阻止我的设备正常自动进入配置的设备。

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

答案 5 :(得分:1)

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

答案 6 :(得分:0)

在项目目标的构建阶段/迦太基中,输入迦太基命令,如下所示:

EXPANDED_CODE_SIGN_IDENTITY =''迦太基复制框架

这只是解决get environment var问题时的临时解决方案。

答案 7 :(得分:0)

摘要:

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

详情:

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

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

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

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

猜测,我的问题与开发者捆绑标识符注册中的异常延迟有关。

但最终,事情仍然没有明确的原因,仍然无法正常工作。

-- 更新 --

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

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