.pbxproj 中缺少配置文件变量
Provisioning Profile variable missing in .pbxproj
如建议的那样:https://github.com/KrauseFx/fastlane/blob/master/docs/CodeSigning.md
我打开了我项目的 project.pbxproj
并搜索了这样的语句 -
PROVISIONING_PROFILE = "";
奇怪的是,没有为配置文件定义变量。我确保在 xCode 中的构建设置下设置为 automatic
。我也检查了其他几个项目,缺少这样的声明。是什么原因造成的?另外,如果我想手动添加语句 PROVISIONING_PROFILE = "";
我应该将它放在 project.pbxproj
文件中的什么地方。
查找以 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";
};
缺少 PROVISIONING_PROFILE
等同于 Automatic -- 将此值设置为除空以外的任何值(该值将是一个 UUID)表示您打算使用 UUID 与该值匹配的特定配置文件PROVISIONING_PROFILE
.
在大多数情况下,您希望使用自动设置,它会显示为空 PROVISIONING_PROFILE
行或不存在该行。自动允许您更新、下载和安装更新版本的配置文件,而无需在每次添加新测试设备、启用新的基于授权的服务或简单地重新发布现有配置文件时更新构建配置。
供应配置文件作为 .mobileprovision 存储在磁盘上,默认排序顺序为字母顺序。使用自动时,以下规则用于 select 要签名的配置文件 -- 第一个匹配的配置文件获胜:
- 具有与当前项目的 AppID 精确匹配的显式 AppId (com.mycompany.mydivision.myapp) 的配置文件
- 具有通配符的配置文件 (com.mycompany.mydivision.*) AppId 匹配反向 DNS 样式项目 AppID 的最长组件
- 纯通配符 (*) 的配置文件
如果您必须使用特定的配置文件,请记住,每次在证书、身份和配置文件工具上编辑配置文件时,您都将下载新版本的配置文件——此配置文件的 UUID 将有所不同,因此每次进行更改时都需要更新构建设置。如果您与开发团队合作,只需将新的开发人员证书添加到配置文件中,就会生成新的 UUID,并可能导致团队中的一名或多名成员出现代码签名错误。
如建议的那样:https://github.com/KrauseFx/fastlane/blob/master/docs/CodeSigning.md
我打开了我项目的 project.pbxproj
并搜索了这样的语句 -
PROVISIONING_PROFILE = "";
奇怪的是,没有为配置文件定义变量。我确保在 xCode 中的构建设置下设置为 automatic
。我也检查了其他几个项目,缺少这样的声明。是什么原因造成的?另外,如果我想手动添加语句 PROVISIONING_PROFILE = "";
我应该将它放在 project.pbxproj
文件中的什么地方。
查找以 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";
};
缺少 PROVISIONING_PROFILE
等同于 Automatic -- 将此值设置为除空以外的任何值(该值将是一个 UUID)表示您打算使用 UUID 与该值匹配的特定配置文件PROVISIONING_PROFILE
.
在大多数情况下,您希望使用自动设置,它会显示为空 PROVISIONING_PROFILE
行或不存在该行。自动允许您更新、下载和安装更新版本的配置文件,而无需在每次添加新测试设备、启用新的基于授权的服务或简单地重新发布现有配置文件时更新构建配置。
供应配置文件作为 .mobileprovision 存储在磁盘上,默认排序顺序为字母顺序。使用自动时,以下规则用于 select 要签名的配置文件 -- 第一个匹配的配置文件获胜:
- 具有与当前项目的 AppID 精确匹配的显式 AppId (com.mycompany.mydivision.myapp) 的配置文件
- 具有通配符的配置文件 (com.mycompany.mydivision.*) AppId 匹配反向 DNS 样式项目 AppID 的最长组件
- 纯通配符 (*) 的配置文件
如果您必须使用特定的配置文件,请记住,每次在证书、身份和配置文件工具上编辑配置文件时,您都将下载新版本的配置文件——此配置文件的 UUID 将有所不同,因此每次进行更改时都需要更新构建设置。如果您与开发团队合作,只需将新的开发人员证书添加到配置文件中,就会生成新的 UUID,并可能导致团队中的一名或多名成员出现代码签名错误。