【问题标题】:Xcode won't recognize my new provisioning profileXcode 无法识别我的新配置文件
【发布时间】:2011-07-14 13:41:09
【问题描述】:

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

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

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

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

【问题讨论】:

  • 按照此链接中的步骤操作。有 33 次向上点击的步骤。 stackoverflow.com/questions/999313/… 祝你好运。
  • 这个问题的答案(见下面接受的答案)对于 Xcode 4 仍然有效。
  • @Arkaaito:很高兴知道,谢谢 :)

标签: iphone ios xcode ios-provisioning xcode-organizer


【解决方案1】:

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

对于 Xcode 8.3.2:

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

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

【讨论】:

    【解决方案2】:

    我对这个问题的解决方案是:

    1. 下载您的新配置文件
    2. 双击配置文件进行安装
    3. 在您的 Mac 上转到以下目录: /Users/<your.username>/Library/MobileDevice/Provisioning Profiles
    4. 找到您不再需要的旧配置文件(但在 Xcode 中不断出现)。这对于这一步可能会派上用场:https://github.com/chockenberry/Provisioning
    5. 删除
    6. 完全退出 Xcode
    7. 重新打开 Xcode
    8. 您现在应该可以选择新的配置文件了

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

          要添加到solution above,您可以使用可爱的xcodeproj gem 来帮助解决此类问题。请注意,它确实会将您的 OpenStep key = value; -style 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

          【讨论】:

            【解决方案6】:
            1. 关闭 de xcode
            2. edith 与 texmate,youtproject.xcodeproj
            3. 找到这条线"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E8DEEBA3-FE0A-419F-9F7E-258572D55807";
            4. 擦除
            5. 为企业重新启动 xcode 构建和归档

            【讨论】:

              【解决方案7】:

              这是我在 Xcode 4 中的做法:

              1. 从项目 > 构建设置 > 代码签名中选择不进行代码签名
              2. 清理构建
              3. 重新构建它 - 应该显示类似“这东西需要签名”这样的错误
              4. 从代码签名中选择新的配置文件
              5. 重建

              【讨论】:

              • 非常感谢。效果很好,无需直接在文件中更改任何内容。
              【解决方案8】:

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

              现在是 fun 技术部分:

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

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

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

              【讨论】:

              • 另一件事:我不知道 Xcode 4 中的格式是否发生了变化,因为我还没有开始使用它。这个答案适用于 Xcode 3。
              • 正如 Arkaaito 对我的问题的评论所指出的,同样的事情也适用于 Xcode 4。
              • 如何找到证书的 GUID?
              • @MattDiPasquale:当您在 Provisioning Profiles 部分查看时,组织者会告诉您这一点。
              • 这是一个不错的技巧...谢谢!顺便说一句,要找到用于配置配置文件的 ID,您必须按照以下步骤操作:coderwall.com/p/znqi-w/…
              【解决方案9】:

              我能够通过在代码签名身份中将其更改为“不进行代码签名”来修复此错误。构建,您会收到错误消息“产品类型需要代码签名......等等......”。然后返回并选择正确的配置文件。建造一切都很好。这发生在我身上,因为我的证书过期了,我更新了它。除了上述之外,我还必须从我的钥匙串和 Organizer 中删除旧证书。

              【讨论】:

              • 删除旧证书对我来说是一笔交易,谢谢!
              猜你喜欢
              • 1970-01-01
              • 2023-01-31
              • 2015-09-19
              • 2010-12-23
              • 1970-01-01
              • 2014-12-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多