Xcode无法识别我的新的配置文件

22

我的应用程序的开发提供配置文件几周前过期了,所以我去提供配置文件门户网站获取一个全新的。获得新的之后,我访问了Xcode组织者,将过期的配置文件从我的设备和Mac中删除,然后导入新的配置文件。Xcode立即将该配置文件安装到我的设备上,我的应用程序再次在设备上运行。

问题是,虽然组织者能够看到新配置文件并像往常一样安装它,但IDE在旧的配置文件和新的配置文件之间感到困惑。每次尝试构建应用程序时,它立即失败。错误控制台告诉我,Xcode无法找到旧的配置文件,因为列出的 GUID 属于旧的配置文件。这很奇怪; 我认为Xcode现在应该已经知道新的配置文件了。

我尝试了从我的设备和Mac中删除新的配置文件,然后重新安装该配置文件。不起作用,Xcode仍然试图查找旧的配置文件。我也尝试选择其他配置文件以使Xcode忘记旧的配置文件,然后选择新的配置文件。我甚至尝试手动输入新的 GUID 在“其他”选项中。然而,Xcode仍然坚持要查找旧的配置文件,而该文件现在已从我的Mac中删除。

如何说服Xcode我已经为我的应用程序生成了一个新的提供配置文件以便使用?


请按照此链接中的步骤操作,其中包括已获得33个赞的步骤。https://dev59.com/tHNA5IYBdhLWcg3wWsUA#2241624 祝好运。 - Louie
1
这个问题的答案(请参见下面的被接受的答案)仍然适用于Xcode 4。 - Arkaaito
9个回答

19

简而言之: 结果是我只需手动编辑项目文件告诉Xcode新的配置文件,但我不知道为什么必须手动更新项目文件。可能在导入新配置文件到Xcode过程中出了问题,所以它没有意识到新的配置文件已经到来。或者文件系统在中途失败了,Xcode无法进行更新。

现在是有趣的技术部分:

重要提示:与任何涉及修改文件的操作一样,请确保备份您的.xcodeproj包和/或整个Xcode项目,或确保您的Xcode项目处于正确的版本控制状态。您不希望搞砸,并导致Xcode无法将项目构建到设备上,也没有备份可以恢复。

我查看了应用程序的.xcodeproj包的内容(此时未运行Xcode)。要查看这些内容,请在Finder中打开项目文件夹,然后按Control键单击.xcodeproj文件并选择“显示包内容”:

Breeze.xcodeproj/
  Daniel.mode1v3
  Daniel.pbxuser
  project.pbxproj

然后在文本编辑器中打开project.pbxproj(它是文本,不是二进制),并查找构建配置信息。

有一个标记为/* Begin XCBuildConfiguration section */的部分(您可以使用编辑器的搜索功能找到它)。这是一个条目列表,每个条目表示给定构建配置中给定配置文件的代码签名配置。

下面是关于我用于开发二进制文件签名的配置文件的信息:

1D6058940D05DD3E006BFB54 /* Debug */ = {
    isa = XCBuildConfiguration;
    buildSettings = {
        ALWAYS_SEARCH_USER_PATHS = NO;
        "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Daniel Tan (XXXXXXXXXX)";
        COPY_PHASE_STRIP = NO;
        GCC_DYNAMIC_NO_PIC = NO;
        GCC_OPTIMIZATION_LEVEL = 0;
        GCC_PRECOMPILE_PREFIX_HEADER = YES;
        GCC_PREFIX_HEADER = Breeze_Prefix.pch;
        GCC_VERSION = com.apple.compilers.llvmgcc42;
        INFOPLIST_FILE = "Breeze-Info.plist";
        IPHONEOS_DEPLOYMENT_TARGET = 4.0;
        PRODUCT_NAME = "Breeze";
        "PROVISIONING_PROFILE[sdk=iphoneos*]" = "36F99F3E-805F-47A7-95D4-FF8324711CBE";
        SDKROOT = iphoneos;
    };
    name = Debug;
};

值得注意的是这一行:

"PROVISIONING_PROFILE[sdk=iphoneos*]" = "36F99F3E-805F-47A7-95D4-FF8324711CBE";

这是构建错误报告中报告的GUID;我旧的、过期的配置文件的标识符。

我所要做的就是用新配置文件的GUID替换它:

"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E6E6369E-FD58-4886-9C3A-72C9DAE36501";

我重新在Xcode中打开了我的项目,现在我的应用程序可以使用新的配置文件成功构建和安装到我的设备上。


另外一件事:我不知道在 Xcode 4 中格式是否有所改变,因为我还没有开始使用它。这个答案适用于 Xcode 3。 - BoltClock
正如Arkaaito在我的问题下评论的那样,同样适用于Xcode 4。 - BoltClock
1
如何找到证书的GUID? - ma11hew28
@MattDiPasquale:当您在“预配配置文件”部分查看时,组织者会向您提供此信息。 - BoltClock
那是个不错的技巧...谢谢!顺便说一下,要找到配置文件的ID,你必须按照这里的步骤进行:https://coderwall.com/p/znqi-w/finding-the-uuid-of-an-iphone-provisioning-profile - NightFury

15

以下是我在 Xcode 4 中完成此操作的步骤:

  1. 从“项目”>“构建设置”>“代码签名”中选择“不要对代码进行签名”
  2. 清理构建。
  3. 再次构建 - 应显示错误信息:“此内容需要签名”。
  4. 从“代码签名”中选择新的配置文件。
  5. 重新构建。

非常感谢。那个完美地运行了,不需要直接在文件中更改任何内容。 - user427969

8

我通过将代码签名标识更改为“不进行代码签名”来解决了这个错误。编译后,您会收到“产品类型需要代码签名”的错误提示。然后返回并选择正确的配置文件,再次编译即可。这种情况可能是因为我的证书过期并已更新。除了上述步骤外,我还必须从钥匙串和组织者中删除旧证书。


删除旧证书对我来说是个决定性因素,谢谢! - Hari Honor

1

除了上面的解决方案,您还可以使用可爱的xcodeproj gem来帮助处理这样的问题。请注意,它会将您的OpenStepkey = value;风格的plist转换为XML格式。注意:如果您稍后在Xcode中进行项目文件更改,则Xcode会将其改回。无论是哪种文件类型,都可以在Xcode或命令行中构建。我如何使用它的示例

project = Xcodeproj::Project.new('Foo.xcodeproj')
csi_key = 'CODE_SIGNING_IDEDNTITY'
project.targets.each do |target|
  target.build_configurations.each do |conf|
    conf.build_settings[csi_key] = 'iPhone Developer: Cool Dood (XYZ123)' unless conf.build_settings[csi_key] == nil
  end
end

这是我使用它的概述:https://gist.github.com/82times/5594887

1

大多数答案对我没有用,因为它们似乎是针对旧版本的。

对于Xcode 8.3.2:

  1. Xcode->偏好设置->帐户
  2. 选择Apple ID
  3. 双击您的团队
  4. 单击左下角的“+”下拉菜单以“创建证书”
  5. 选择iOS开发
  6. 点击“完成”

完成后,我能够通过在Targets->General->Signing下点击“Xcode Managed Profile”旁边的'i'信息图标,并确认“Created”日期反映了新日期来告诉Xcode正在使用最新的配置文件。


1
  1. 关闭Xcode
  2. 使用Texmate编辑youtproject.xcodeproj文件
  3. 找到这一行"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E8DEEBA3-FE0A-419F-9F7E-258572D55807";
  4. 删除该行
  5. 重新启动Xcode,构建并归档企业应用程序

1

我解决这个问题的方法是:

  1. 下载新的配置文件
  2. 双击该配置文件进行安装
  3. 在你的Mac上前往以下目录: /Users/<your.username>/Library/MobileDevice/Provisioning Profiles
  4. 查找你不再需要的旧配置文件(但仍会在Xcode中显示)。这可能对本步骤有所帮助:https://github.com/chockenberry/Provisioning
  5. 删除它
  6. 完全退出Xcode
  7. 重新打开Xcode
  8. 现在应该能够选择你的新配置文件了

0

我曾以为双击下载的配置文件会将其放置到xCode组织档案中,但对我来说这并不起作用。以下步骤最终适用于我。

  1. 打开xCode
  2. 转到产品 -> 目标 -> iOS设备
  3. 转到产品 -> 存档

0
在我的情况下,使用XCode 5时,当我的开发者证书过期时,我遇到了这个问题。我手动下载了新的证书和新的配置文件。我将证书添加到钥匙串中,并将配置文件添加到组织者中的设备中。
然而,XCode一直抱怨我无法签署应用程序。我发现在XCode 5首选项中,它仍显示旧的配置文件,并且尽管我进行了多次重新加载,但它没有刷新为新的配置文件。
最终,我使用iPhone配置实用程序删除了旧的配置文件并添加了新下载的配置文件。代码签名按预期工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接