10

我最近偶然发现了一个相当奇怪的 Xcode 问题,当我构建 IPA 并尝试安装它时,我尝试使用 Xcode、iTunes 和 iPhone Config Utility 进行安装,所有这些都给出了相同的错误

A signed resource has been added, modified, or deleted.

我可以使用 XCode 在我的手机上成功调试应用程序,只有当我尝试安装 IPA 时才会看到错误。

我尝试解压缩 IPA 并运行代码设计验证工具,该工具会引发以下响应:

a sealed resource is missing or invalid In architecture: armv7
resource missing:
/Users/dev1/Documents/PoleTester.app/Settings.bundle/._Root.plist

这导致我查看 Settings.bundle 文件并确保它包含在构建中,它就是这样。有趣的是,如果我删除 Settings.bundle 文件,构建一个 IPA 并尝试在我的 iPhone 上安装它,安装会成功,但这没有用,因为我需要将 Settings.bundle 文件与应用程序一起安装。

对我以前的一些 XCode 项目的进一步调查表明,我可以构建一个包含 Settings.bundle 文件的 IPA,并成功安装它。但是,如果我对 Settings.bundle 文件进行简单更改,例如添加或删除一行,构建一个 IPA,然后尝试安装它,我会得到

"A signed resource has been added, modified, or deleted" error.

对于导致此错误的原因以及 Settings.bundle 文件导致安装失败的原因,我有点不知所措。

有没有人以前见过这个错误,或者可能对导致它的原因有所了解?

我正在使用Xcode 4.6.3和运行iOS 6.1.3的iPhone 4 。

4

5 回答 5

21

Clean Build Folder (⌘⌥⇧-K) 已为我解决了 3 次中的 3 次。

于 2014-07-29T22:57:57.397 回答
3

我刚刚使用 Xcode 6 beta 6 安装到运行 iOS 8 beta 5 的 iPhone 5 时遇到了这个问题。我正在构建的应用程序使用 Today 扩展(又名小部件)。

看来问题源于我没有正确设置依赖项。我有一个第三方框架(Alamofire)作为项目的一部分设置为整个项目的依赖项,但不是今天小部件的依赖项。我可以很好地构建,但是在安装到设备时,我会收到“已签名资源已...”错误。

通过将 Alamofire 添加为 Today 小部件的依赖项,这解决了该问题。

于 2014-08-28T22:48:58.797 回答
2

有点晚了,但我今天在 Xcode 5.0.1 上遇到了完全相同的问题。

根据https://developer.apple.com/library/ios/technotes/tn2318/index.html ,“资源丢失:my.app/..* 错误可能是由以下原因引起的:

以“._”为前缀的文件被视为 AppleDouble 文件,它可以通过将未压缩的 Xcode 项目文件夹复制到非 HFS+ 格式的磁盘上而产生。必须使用“dot_clean”命令删除 AppleDouble 文件。Xcode 项目文件夹是 dot_clean 的参数,如下图所示。

我为解决此问题所做的步骤:

  1. 关闭 Xcode
  2. 在终端中运行“dot_clean /path/to/My_Xcode_Project”
  3. 再次打开 Xcode 并进行新的构建

奇怪的是,这些 _* 文件中的大多数似乎都没有引起任何问题,除了 Settings.bundle 中的问题(我目录中的几乎每个文件都有一个,但只有在我添加 Settings.bundle 之后,IPA 安装失败)。

于 2013-11-13T09:27:53.320 回答
1

就我而言,帮助是将 bash 脚本添加到构建阶段(就在“编译源代码”之前):

find ~/Library/Developer/Xcode/DerivedData -name "YouAppName.appex" | xargs -I % find % -type f -maxdepth 1 | xargs rm

这个脚本的作用是清理项目的appex 目录中的文件(例如资产),但留下子目录(例如编译的故事板)。实际上,在构建时使用此脚本执行起来比完全清理项目要快得多。

于 2015-03-31T10:58:04.310 回答
1

我也遇到了同样的问题,这篇文章解决了我的问题:

http://code-ninja.org/blog/2012/04/17/signed-resource-has-been-added-modified-or-deleted/

事实证明,问题是由产品名称中的特殊字符引起的——在我的例子中,是一个?。删除 ? 从产品名称解决了这个问题。

于 2014-04-25T11:56:07.543 回答