2015-07-20 65 views
0

缺少在本建议:https://github.com/KrauseFx/fastlane/blob/master/docs/CodeSigning.md供应配置文件变量.pbxproj

我打开我的项目的project.pbxproj和搜索这样的说法 -

PROVISIONING_PROFILE = "";

奇怪的是没有定义的变量配置文件。我确保在xCode的构建设置下设置为automatic。我也检查了其他几个项目,这样的声明失踪了。这是什么造成的?另外,如果我手动添加语句PROVISIONING_PROFILE = "";,我应该将它放在project.pbxproj文件中。

+0

此链接将帮助你。 http://stackoverflow.com/questions/1760518/codesign-error-provisioning-profile-cannot-be-found-after-deleting-expired-prof –

+0

@NimishaPatel是的,已经看过它。在我的情况下,变量在'.pbxproj'文件中完全不存在。 –

回答

0

缺乏的PROVISIONING_PROFILE是自动的等效 - 有这个值设置到任何东西,但空(该值将是一个UUID)表示您打算使用UUID匹配值为PROVISIONING_PROFILE的特定供应配置文件。

在大多数情况下,您希望使用自动设置,该设置将显示为空行PROVISIONING_PROFILE行或不存在该行。自动允许您更新,下载和安装更新版本的供应配置文件,而无需每次添加新测试设备时更新构建配置,启用新的基于授权的服务,或者只需重新发布现有配置文件。

供应配置文件以.mobileprovision的形式存储在磁盘上,缺省排序顺序为字母。当使用自动,以下规则来选择配置文件与签署 - 匹配胜第一规格:

  • 型材用显式的AppId(com.mycompany.mydivision.myapp)精确匹配当前项目的AppID
  • 配置文件使用通配符(com.mycompany.mydivision。*)APPID匹配反向DNS风格的项目APPID
  • 配置文件是纯通配符(*)

如果必须使用时间最长的组件一个特定的配置文件,请记住每次你在证书,身份和配置文件工具中编辑配置配置文件,您将下载配置配置文件的新版本 - 此配置文件的UUID将有所不同,因此每次进行更改时都需要更新您的配置设置。如果您与开发团队一起工作,只需将新开发人员证书添加到供应配置文件中即可生成新的UUID,并可能导致团队中的一个或多个成员出现代码签名错误。

+0

但是为什么有些项目根本没有'PROVISIONING_PROFILE'变量,有些项目有这样的空白项目:'.pbxproj'中的'PROVISIONING_PROFILE =“”;',尽管在两种情况下都是“自动”。 –

+1

这取决于构建配置如何更改;将其设置为明确的值会将条目添加到项目中,然后设置回自动将将该值清空。对于手动注入该设置密钥的开发人员,行为是不同的。最终的结果是,在当前的Xcode发货版本中,省略的键或空白值都被视为自动。 Apple一如既往,保留随时更改含义的权利! –

0

查找以XCBuildConfiguration开头的部分。你需要在你的项目中添加它为每个版本的配置:

/* Begin XCBuildConfiguration section */ 
    8C822CD8279123D91163DD34 /* Release */ = { 
     isa = XCBuildConfiguration; 
     buildSettings = { 

       CODE_SIGN_ENTITLEMENTS = ""; 
       CODE_SIGN_IDENTITY = "iPhone Distribution: Company Name, Inc"; 
       "CODE_SIGN_IDENTITY[sdk=iphoneos4.2]" = "iPhone Distribution: Company Name, Inc"; 
... 
       PROVISIONING_PROFILE = ""; 
       "PROVISIONING_PROFILE[sdk=iphoneos4.2]" = ""; 
       SDKROOT = iphoneos; 
       TARGETED_DEVICE_FAMILY = "1,2"; 
     }; 
     name = "Release"; 
    };