9

I'm researching the best approach to automating our build process. I've got my own ideas (through experience on a previous non-iOS project) but need good arguments for and against various possibilities.

Objective: A single xcode project with a single target (think white-label) needs to be built in 1..N different flavours (concrete brandings) with minimum user interaction and minimum technical knowledge. For AdHoc and/or AppStore.

Essentially, that will mean specifying per build; a folder containing Icons + Splashscreen, a bundle containing brand specific resources and (presumably?) the Info.plist, specifying appname, bundle-id, etc.

Issues that need to be respected or clarified;

  • Manual build of a single brand via Idiot-Proof GUI (choose a git branch/tag, specify a certain brand, configure the app e.g. IAP-enabled, server-domainname, etc - will be written to the info.plist)
  • In previous manual tests, setting the executable name in the plist didn't work? Sorry, have forgotten the exact problem.. perhaps was only an Xcode Debug buildconfig problem, not relevant to a distribution build?
  • Code-Signing?!? Can the profile be specified on-the-fly? Some brands need to be built with the customer's own profile.

My personal feeling: Hudson or CruiseControl + Xcode plugin.

There seems to be plenty of documentation around for an Xcode solution and I've seen this in action on a Flex project I worked on, with almost exactly the same white-label/branding requirements. Of course that was using Ant script though and there was NO behavioral config to respect. That's my only uncertainty here... I suspect it would have to be hardcoded somewhere, but that's not the answer that's going to please some people. There is a wish to be able to specify the various app-config settings (server url, is function Foo supported, is the view X displayed, etc, etc) via a GUI form, when building manually. I'm not sure how easy it would be to shoehorn that into a typical Hudson or CC config?

And hence one suggestion that has been made is to write an OSX app for building our clients. The theory being, nice clean non-tech UI for entering all the necessary meta data & app setting and a big shiny green button labelled "Build". But personally I'm skeptical that this approach is any more flexible or easier to implement than a classic CI solution.

So the question is basically, what's preferable; a classic server based, version control integrated, CI approach or a custom OSX utility?

Whichever we go for it'll almost certainly be a requirement to get it up and running in 2 or 3 days (definately less than one week).

4

3 回答 3

1

恕我直言,您可以使用 XCode 的不同目标解决所有问题。

每个目标都将共享代码,但它可以:

  • 使用不同的个人资料签名
  • 使用不同的 plist:这意味着有不同的名称..
  • 使用不同的品牌形象。您只需用相同的名称命名图像并在文件检查器中选择正确的目标。
  • 在 XCode 中一键构建。

我希望这有帮助

于 2014-09-24T09:59:58.833 回答
0

一个非常晚的回复,但我会采取的方法是创建白标 IPA,然后创建一个脚本来: 1. 解压缩它(将 .ipa 文件扩展名更改为 .zip)。2. 改变资产。更新 info.plist(使用 Plistbuddy 命令)再次压缩。退出代码。

将此脚本视为起点:https ://gist.github.com/catmac/1682965

于 2015-02-15T08:46:50.243 回答
0

很晚的答案。但我会使用不同的.xcconfig文件和多种方案。方案名称可以是target/brand.

于 2016-04-22T13:49:20.550 回答