I’m deploying an iOS application .
I want to distribute my single application to ‘N’ no of clients with different bundle identifier, version number and client specific fields like (appID, password, clientName, clientID and etc) for each client.
In the later stages my build process have to be automated for CI. Can any one suggest me an efficient way of doing it?
I have already done and see a success to the following approaches.
By creating independent ‘targets’ for each clients.
By creating multiple schemes to map seprate info.plist file. ref: followed this link
However , I want to know the best possible way of doing it .
Not sure if this is the best way, however some time ago I created a Swift utility for configuring an Info.plist for multiple environments. You create a base Info.plist
file and then, for each key that will differ across environments, a separate file called an EnvFile that encapsulates an environment, by name and each of its unique keys.
The utility can then merge in the keys for a specific environment to the base Info.plist. Example:
backdrop.swift --select staging
I used it for having the CI server automatically uploading dev, staging and production builds.
There are also tools like Fabric now, that do this kind of thing, though I'm not sure if it has then env management feature yet.