Xcode将无法识别我的新configuration文件

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

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

我尝试从我的设备和我的Mac中删除新的configuration文件,然后重新安assembly置文件。 不工作,Xcode仍然在寻找旧的。 我也尝试select不同的configuration文件,使Xcode忘记旧的,然后select新的。 我甚至尝试在其他选项中手动input新的GUID。 然而,Xcode仍然坚持寻找旧的configuration文件,现在已经从我的Mac中消失了。

我如何说服Xcode我已经为我的应用生成了一个新的configuration文件供它使用?

tl; dr:事实certificate我只是手动编辑项目文件来告诉Xcode新的configuration文件。 现在,我不知道为什么我不得不手动更新项目文件。 也许我在导入新的configuration文件到Xcode的过程中做了错误的事情,所以它没有意识到我的新configuration文件进来了。或者文件系统中途窒息和Xcode无法更新自己。 好吧。

现在的 开玩笑 技术部分:

重要说明:和其他涉及修改文件的内容一样,您不应该修改: 确保备份您的.xcodeproj包和/或您的整个Xcode项目,或者确保您的Xcode项目保持正确的版本控制 。 你不想搞砸,导致Xcode停止build立你的项目到你的设备,没有任何东西回落。

我偷看到我的应用程序的.xcodeproj包(Xcode不在此时运行)的内容。 要查看这些文件,请在Finder中打开您的项目文件夹,然后按住Control键并点击.xcodeproj文件,然后select显示包装内容

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

然后在文本编辑器(它是文本,而不是二进制文件)中打开project.pbxproj ,并查看构buildconfiguration信息。

有一部分标记为/* Begin XCBuildConfiguration section */ (您可以使用编辑器的searchfunctionfind它)。 这是一个条目列表,每个条目代表给定构buildconfiguration中给定configuration文件的代码签名configuration。

这是关于我用来签署我的二进制开发的configuration文件的信息:

 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"; 

这是由构build错误报告的GUID; 我旧的,过期的configuration文件的标识符。

我所要做的就是用新configuration文件的GUIDreplace它:

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

我再次在Xcode中打开我的项目,现在我的应用程序使用新的configuration文件成功build立并安装在我的设备上。

以下是我在Xcode 4中做到的:

  1. 从项目中select不要代码签名>构build设置>代码签名
  2. 清理构build
  3. 再次构build – 应该显示一个错误,如“这个东西需要签名”
  4. 从代码签名中select新的configuration文件
  5. 重build

我可以通过将其更改为代码签名标识中的“不要代码签名”来修复此错误。 生成,你会得到错误“代码签名是需要产品types…等等…”。 然后返回并select正确的configuration文件。 build设和一切好。 这发生在我身上,因为我的证书过期了,我续约了。 除上述之外,我还必须从我的钥匙链和组织者中删除旧证书。

  1. closuresde xcode
  2. 与texmate的edith,youtproject.xcodeproj
  3. find这行"PROVISIONING_PROFILE[sdk=iphoneos*]" = "E8DEEBA3-FE0A-419F-9F7E-258572D55807";
  4. 抹去
  5. 为企业重新启动xcode build&archive

要添加到上面的解决scheme ,您可以使用可爱的xcodeproj gem来帮助这样的东西。 请注意,它会转换您的OpenStep key = value; 样式的plist到XML。 注:我发现,如果您稍后在Xcode中进行项目文件更改,则Xcode会将其更改回来。 无论是在Xcode或从命令行文件的任何风格build立罚款。 我如何使用它的样本

 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. 下载新的configuration文件
  2. 双击configuration文件进行安装
  3. 转到Mac上的以下目录:/ /Users/<your.username>/Library/MobileDevice/Provisioning Profiles Library/ /Users/<your.username>/Library/MobileDevice/Provisioning Profiles
  4. find您不再需要的旧configuration文件(但不断显示在Xcode中)。 这可能会派上用场: https : //github.com/chockenberry/Provisioning
  5. 删除它
  6. 完全退出Xcode
  7. 重新打开Xcode
  8. 您现在应该可以select新的configuration文件

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

但是,XCode不断抱怨我无法login应用程序。 我认为,在XCode 5偏好设置中,它仍然显示旧的供应configuration文件,尽pipe我在那里进行了多次重新加载,但它并没有刷新到新的configuration文件。

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

我认为双击下载的供应configuration文件将它放入xCode组织者档案,但这只是不适合我。 以下步骤终于为我工作。

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

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

对于Xcode 8.3.2:

  1. Xcode->首选项>帐户
  2. selectApple ID
  3. 双击你的团队
  4. 点击左下angular的“+”下拉菜单“创build证书”
  5. selectiOS开发
  6. 点击“完成”

这样做后,我可以告诉Xcode使用最新的configuration文件,点击目标 – >一般 – >签名下的“Xcode托pipeconfiguration文件”旁边的'我'信息图标,并确认'创build'date反映了新的。