We have a need to use a single repository but build two AppStore apps from it. Is there a way for me to build that with a different provisioning profile and cert. We have two bundle id’s (i.e. com.company.app1 & com.company2.app2). We are using Xamarin if that makes any difference. I’d like to be able to use this in a single App on Bitrise with a separate Workflow for the secondary app.
Hi @kcraig35,
If you want to build your project with two different bundle ids in a single build, you need two Xamarin Archive
steps (you can add as many as you like and change any parameter of the step). If you need to change the bundle ID you can use the Set iOS Info.plist - Bundle Identifier
step.
If you want to create the ipa files in separate workflows / separate builds, just create two workflows, both should contain Xamarin Archive
step and one workflow of them (or both) should contain (before the archive step) Set iOS Info.plist - Bundle Identifier
step (if you want to change the bundle ID).
This case you can not trigger both workflow with the same event (git push/pr/tag).
If you would need to run both workflow at the same trigger event, you should add your app to bitrise two times. This case the workflow setup would be the same, but the two different workflows would contained in different bitrise projects. To trigger both, just add both project’s webhook to your git repository.
If you would create different type of ipa files with the same bundle id, then it would be enough to add an Export iOS and tvOS Xcode archive
after Xamarin Archive
. The archive step would create the first ipa file and also exports the generated xcarchive, then the export step would use that archive and create a second ipa file.
If you have any questions, just let us know!
Okay good that’s what I thought based off reading the docs, thank you for the verification and the specifics on the two directions this helps greatly.
Is it possible to use different .plist files? For example, can I use a InfoDevelop.plist file for one workflow and an InfoStore.plist file for another?
Hi @freever, may i ask you how do you use the different .plist files locally? are you manually setting the Build Settings/Packaging/Info.plist File
project option between Xcode archives?
I don’t do this locally. I have a workflow for my develop branch that deploys apps to bitrise, and I have another workflow for master that pushes apps to the beta channels on the app stores. I want to be able to have both of these apps installed on a device AND a version built locally on my machine - all at the same time. This just makes it easier for me and my testers.
Having multiple plist files isn’t necessarily the solution, I was just wondering if it was possible. I have instead got this working by using the available steps to modify the package name and bundle ids in my android manifest and info.plist files. It seems to work great so far.
I see.
We do not have a dedicated step to replace the Info.plist, however if you want to keep the different Info.plist files for the different type of builds in your repository, you can replace them using a script step.
But it is recommended to use steps instead of the script step.
Replacing can be done with a simple “move” of the other file to the right place, something like:
#!/bin/bash
set -ex
mv "./path/to/DevInfo.plist" "./path/to/Info.plist"
Also worth to mention that using the CLI you can experiment with the config easily on your Mac/Linux: