利用 Build Configuration 来进行一些定制化的配置

一般来说,大厂的 App 有两个证书进行签名打包,除了 App Store 上架用的,还有个用于内部测试,用的是企业证书。为了和正式包加以区分,与之相对应就会有两种不同的 App IDs 。通常来说,可能直接点的手法就是在打包之前手动更新 Info.plist 文件里的 Bundle Identifier

这样的做法可行,但是由于需要在打包的 Job 中进行更改,会有很多修改语句,如果 app 是一个有很多 target 的庞大工程,那么在打包脚本中就会出现这样的现象:

打包脚本

如果想改动,那就会是一件非常蛋疼的事情……

利用 Build Configuration 做统一配置

在 Xcode 的 Build Settings -> Packing 中,有个 Product Bundle Identifier 的设置项,展开后有一些以 Build Configuration 为 key 的子项:

build settings

将我们不同 Configuration 下的 Bundle ID 设置好,不过还需要在 Info.plist 里面 CFBundleIdentifierBundle Identifier) 改成用这个参数:

info.plist

这样在 xcodebuild 时,会根据 -configuration 这个参数选择对应的 ID。

如果有别的 ID 也需要变动呢?这一个参数恐怕就不够用了,那就用 User-Defined Setting 吧。

Build Settings 上,点 + 号,Add User-Defined Setting

uiser_defined_settings

然后就会在下方的 User-Defined 多出一个空的设置项,展开后和 Product Bundle Identifier 一样,有一堆以 Build Configuration 为 key 的子项,剩下的事情参考上面的步骤,就是把你想设置上的 ID 设置好,更新到你想要的用到的地方。

不一定是 Bundle ID,其他的一些打包配置也可以通过这个进行设置。