【发布时间】:2015-06-30 06:48:21
【问题描述】:
我试图为同一个应用维护两个捆绑标识符:一个用于开发状态,另一个用于 AppStore。这使我可以将“官方”版本和开发版本都安装在完全相同的设备上而不会发生冲突。
我需要的是一种通过头文件控制捆绑标识符的简单方法。在 Xcode 中,我指定了以下设置:
- 预处理 Info.plist 文件设置为是;
-
Info.plist 预处理器前缀文件设置为
ux_defines.h。
ux_defines.h 如下:
// Set this to 0 to switch bundle id to official
#define USE_DEBUG_PRODUCT 1
#if (USE_DEBUG_PRODUCT == 1)
# define MACRO_APPID com.companyname.appname_dbg
#else
# define MACRO_APPID com.companyname.appname
#endif
在Info.plist 中,我指定了Bundle Identifier 如下:
<key>CFBundleIdentifier</key>
<string>MACRO_APPID</string>
但是,当我为设备构建时,Xcode 总是给我一个错误:Failed to code sign "App Name"。另一方面,如果我保持包标识符硬编码但在Info.plist 中定义一个自定义选项,一切都会顺利进行。例如以下选项:
<key>FooBar</key>
<string>MACRO_APPID</string>
...被正确地预处理为:
<key>FooBar</key>
<string>com.companyname.appname_dbg</string>
... 或
<key>FooBar</key>
<string>com.companyname.appname</string>
... 取决于标头中MACRO_APPID 的值。该错误似乎仅特定于捆绑标识符。
如何设置项目并避免这些错误?
【问题讨论】:
标签: ios xcode build preprocessor