21

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

问题是,虽然 Organizer 能够看到新的配置文件并正常安装它,但 IDE 会混淆旧配置文件和新配置文件。每次我尝试构建应用程序时,它都会立即失败。错误控制台告诉我 Xcode 找不到旧配置文件,因为列出的 GUID 属于旧配置文件。那很奇怪; 我以为 Xcode 现在已经知道新的配置文件了。

我尝试从我的设备和 Mac 中删除新的配置文件,然后重新安装配置文件。不起作用,Xcode 仍在尝试寻找旧的。我还尝试选择不同的配置文件以使 Xcode 忘记旧配置文件,然后选择新配置文件。我什至尝试在“其他”选项中手动输入新的 GUID。然而 Xcode 仍然坚持寻找旧的配置文件,现在它已经从我的 Mac 上消失了。

如何让 Xcode 相信我已经为我的应用程序生成了一个新的配置文件供它使用?

4

9 回答 9

18

tl;博士:原来我只需要手动编辑项目文件来告诉 Xcode 新的配置文件。现在,我不知道为什么我必须手动更新项目文件。也许我在将新配置文件导入 Xcode 的过程中做错了什么,所以它没有意识到我的新配置文件已经进入。或者文件系统在中途阻塞并且 Xcode 无法自我更新。那好吧。

现在对于乐趣技术部分:

重要提示:与其他任何涉及修改您不应该修改的文件一样:确保备份您的.xcodeproj包和/或您的整个 Xcode 项目,或确保您的 Xcode 项目保持在适当的版本控制中。你不想搞砸并导致 Xcode 停止在你的设备上构建你的项目,而没有任何依赖。

我查看了我的应用程序.xcodeproj包的内容(此时 Xcode 没有运行)。要查看这些,请在 Finder 中打开您的项目文件夹,然后按住 Control 键单击您的.xcodeproj文件并选择Show Package Contents

Breeze.xcodeproj/
  丹尼尔.mode1v3
  丹尼尔.pbxuser
  项目.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 中打开我的项目,现在我的应用程序使用新的配置文件成功构建并安装在我的设备上。

于 2011-03-13T18:33:58.917 回答
15

这是我在 Xcode 4 中的做法:

  1. 从 Project > Build Settings > Code Signing 中选择 Don't Code Sign
  2. 清理构建
  3. 再次构建它 - 应该显示一个错误,例如“这个东西需要签名”
  4. 从代码签名中选择新的配置文件
  5. 重建
于 2011-06-02T07:05:05.747 回答
8

I was able to fix this error by changing it to "Don't Code Sign" in Code Signing Identity. Build, and you get the error "code signing is required for product type ...blah...". Then go back and select the right profile. Build and all good. This happened to me because my certificate expired and I renewed it. In addition to the above I also had to remove the old certificate from my keychain, and the Organizer.

于 2011-10-10T15:58:45.850 回答
1
  1. 关闭 de xcode
  2. 与 texmate,youtproject.xcodeproj 的伊迪丝
  3. 找到这条线"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E8DEEBA3-FE0A-419F-9F7E-258572D55807";
  4. 擦除
  5. 为企业重新启动 xcode 构建和归档
于 2013-05-08T18:20:24.563 回答
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

于 2013-05-17T19:40:05.067 回答
1

大多数答案对我不起作用,因为它们似乎适用于旧版本。

对于 Xcode 8.3.2:

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

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

于 2017-07-08T19:38:53.080 回答
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. 您现在应该能够选择新的配置文件
于 2016-01-08T10:21:50.807 回答
0

就我而言,使用 XCode 5,当我的开发人员证书过期时,我遇到了这个问题。我手动下载了新证书和新配置文件。我将证书添加到钥匙串,并将配置文件添加到管理器中的设备。

但是,XCode 一直抱怨我无法签署该应用程序。我认为在 XCode 5 首选项中,它仍然显示旧的配置文件,并且尽管我在那里进行了多次重新加载,但它并没有刷新到新的配置文件。

最后,我使用 iPhone 配置实用程序删除了旧的配置文件并添加了新下载的配置文件。代码签名按预期工作后。

于 2014-01-02T21:45:20.287 回答
0

我认为双击下载的配置文件会将其放入 xCode Organizer Archive 中,但这对我不起作用。以下步骤终于对我有用。

  1. 打开 xCode
  2. 转到产品 -> 目的地 -> iOS 设备
  3. 转到产品 -> 存档
于 2015-12-16T18:16:08.147 回答