iOS, fastlane match & dynamic provisioning

Hi @elfenlaid,

Thanks for asking this question here! :wink:

If you use match (or any other non bitrise code signing management tool) and you get an error like:

Check dependencies 
No profiles for 'com.company.app' were found: Xcode couldn't find a provisioning profile matching 'com.company.app'. 
Code signing is required for product type 'Application' in SDK 'iOS 10.0'

The easiest solution is:

  1. follow this guide http://devcenter.bitrise.io/ios/code-signing/
  2. make sure that our Cerficiate and profile installer step is in the workflow
  3. run our codesigndoc tool (as advised in the guide) to collect the code signing files
  4. and upload to bitrise.io (as advised in the guide)

Other solutions and more explanation:

This error comes from Xcode, not from bitrise, and it simply means that Xcode can’t find the required code signing files.

You might ask “But I use match / tool X to manage the signing files, it should be there! It works on my Mac!”

The answer is: it works on your Mac because you have other code signing files available on your Mac, not just the ones in your match repo. match in itself does not guarantee that all required code signing files are available! It guarantees that the signing files you manage with match are available, but Xcode might require other signing files!

This is especially true if you use Xcode 8 auto code signing. That requires a special, Wildcard, Team provisioning profile for an initial signing, regardless of what the final signing is.

When you sign into Xcode.app on your Mac, it does download this wildcard team prov profile, so of course it will be available and it will work on your Mac. But when you try to build on a completely clean Mac, where you don’t sign into Xcode (e.g. in a continuous integration environment), you have to provide this/these signing files.

Fortunately our codesigndoc tool was designed exactly for this! Just run it on your Mac, as advised in the guide, and it will collect all the required code signing files for your project (codesigndoc analyzes the Xcode archive log which includes every code signing identity/profile used by Xcode during the archive - more information in codesigndoc’s readme). It will not upload those files anywhere, you’re free to do anything with those files.

Probably the easiest way is to upload them to bitrise.io as described in the guide, but if you want to rather store them in a repository, you’re free to do so. The only thing is, those file are required by Xcode to sign your project. If these files are missing from your match repo / tool, Xcode will not be able to sign the project, unless you have it from another source (e.g. by signing into Xcode.app).


More in-depth iOS code signing guide, with lots of technical details: http://devcenter.bitrise.io/ios/code-signing-technical-details/

If you have any questions, just let us know!

Happy Building! :slight_smile: