简而言之: 结果是我只需手动编辑项目文件告诉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 = {
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中打开了我的项目,现在我的应用程序可以使用新的配置文件成功构建和安装到我的设备上。