繁体   English   中英

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

[英]Xcode won't recognize my new provisioning profile

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

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

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

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

tl; dr:结果我只需要手动编辑项目文件来告诉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中的表现:

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

我能够通过在代码签名标识中将其更改为“不代码签名”来修复此错误。 构建,您会收到错误“产品类型需要代码签名......等等......”。 然后返回并选择正确的配置文件。 建立和所有好。 这发生在我身上,因为我的证书已经过期而且我续签了。 除了上述内容之外,我还必须从我的钥匙串和组织者中删除旧证书。

  1. 关闭de xcode
  2. edith with texmate,youtproject.xcodeproj
  3. 找到这条"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E8DEEBA3-FE0A-419F-9F7E-258572D55807";
  4. 抹去
  5. 为企业重新启动xcode构建和归档

要添加到上面解决方案 ,您可以使用可爱的xcodeproj gem来帮助这样的东西。 注意,它确实会转换你的OpenStep key = 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. 下载新的配置文件
  2. 双击配置文件以进行安装
  3. 转到mac上的以下目录:/ /Users/<your.username>/Library/MobileDevice/Provisioning Profiles Library/ /Users/<your.username>/Library/MobileDevice/Provisioning Profiles
  4. 找到您不再需要的旧配置文件(但不断显示在Xcode中)。 这可能会对此步骤派上用场: https//github.com/chockenberry/Provisioning
  5. 删除它
  6. 完全退出Xcode
  7. 重新打开Xcode
  8. 您现在应该可以选择新的配置文件

在我的情况下,使用XCode 5,当我的开发人员证书过期时,我遇到了这个问题。 我手动下载了新证书和新配置文件。 我将证书添加到钥匙串,并将配置文件添加到组织者中的设备。

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

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

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

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

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

对于Xcode 8.3.2:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM