Introduction‎ > ‎


IOS builds

How to fix "Code Sign error: No unexpired provisioning profiles ..." error?

  • First you have to know that Apphance Flow installs provisioning profile automatically from the place specified in configuration (see Configuration reference for details). You should always make sure that the latest valid provisioning profile is added to source code of your application and Flow's properties are pointing to the directory where it is placed
  • Different targets can have different provisioning profiles assigned. In case you use more than one provisioning profile, make sure the naming for the profile files you put in source code is correct. See Configuration reference for details
  • It's easier to debug such errors in xcode then with command line, so you should open your project in xcode using built-in Screen Sharing mechanism
  • You should check your code signing setting:

  • You should check if for afected target "iPhone Distribution" profile is selected
  • If  there is "no profiles currently match" indication you should check:
    • if your bundle id matches yours provisioning profile 
    • if your provisioning profile expired: go to XCode -> Window -> Organizer and check Library -> Provisioning Profiles section
    • you have distribution certificate matching your provisioning profile (again in Organizer, Certificates section)
    • you have private key matching your distribution certificate (Organizer, Certificates section)
    • your provisioning profile or certificate is not expired (Organizer, Certificates section) 
  • As a basic rule - you should have unexpired certificate with private key and unexpired provisioning profile (with bundle id matching your project's bundle id) signed with this certificate
  • Sometimes, when you use wildcard bundle ids in provisioning profiles, as described here XCode matches different (often wrong) provisioning profile with your application. Simply avoid wildcard profiles.

What should I do when my provisioning profile expired ?

You should renew your provisioning profile according to Apple's documentation and add it to your application's source code in the directory configured in Flow's properties file.

What should I do when my certificate expired ?

You should renew your certificate according to Apple's documentation. Then you should regenerate your provisioning profiles and add it to your application's source code in the directory configured in Flows' properties file.

What's the difference between distribution and development certificates/profiles?

  • Over the air installation is only possible with distribution profile. These are the provisioning profiles that you should put in the source code of your application and look for in the organizer.
  • Development certificates/profiles are only used to build the application locally. You should not use the profiles for Flow, as Flow is only preparing the distribution builds.

What is the difference between certificate and provisioning profile?

Certificate binds your public key with your Apple's developer account. Provisioning profile ties certificate and devices ids to an authorized iPhone Development Team and enables a device to be used for testing.  

Where is my keychain?

By default all users have they own key chain in /Users/Shared/user-name/Library/Keychains/login.keychain file. You can create additional key chain files but you do it on your own risk. You should pass appropriate properties pointing to keychain and specifying keychain password in order to open keychain access - so that Flow can perform the build.

What should I do when I see "Culd not start simulator session" error?

iOS test are ran in iPhone simulator. In order to be able run simulator machine should be logged in to jenkins user desktop.  We recommend enabling auto login feature.

I installed jre 7 on OSX but can not run it from console. What should I do?

Flow requires java 7. According to oracle "Installing a JRE from Oracle will not update java -version symlinks or add java to your path. To be able to do this, you need to install the JDK." So to be able to use Flow on OS X you have to install JDK not JRE.

My targets/configurations disappear in Flow's build but are visible in Xcode?

Sometimes during merge of the .pbxproj the file gets corrupted. If that happens, then sometimes everything looks fine, but then the targets and configuration are not shown by xcodebuild command line tool. In order to fix the problem you need to delete and recreate targets manually in your project using XCode. 

Android builds

Android command line tool is reported as missing in Flow.

After installing Android's SDK you need to manually add PATH entry, so that android tool is available.