Nativescript-cli: Manual signing with distribution provisioning profile fails with NS 2.5

Created on 7 Feb 2017  路  12Comments  路  Source: NativeScript/nativescript-cli

When specifying the provisioning profile with the new command line parameter "--provision", the "CODE_SIGN_IDENTITY = iPhone Distribution" in build.xcconfig is ignored and "iPhone Developer" is used. The xcode build fails with the error message 'Provisioning profile "" doesn't include signing certificate "iPhone Developer: ..."' because it cannot find a developer certificate for the adhoc distribution provisioning profile.

To reproduce:

  1. Use NS 2.5 to create a test app: tns create "SignTest" --ng
  2. In the file app/App_Resources/iOS/build.xcconfig, enable CODE_SIGN_IDENTITY = iPhone Distribution;
  3. Create an adhoc distribution provisioning profile for your SignTest app id and link it to your distribution certificate
  4. Install the distribution provisioning profile and distribution certificate locally
  5. Run the build with: tns build ios --release --for-device --provision (UUID)
  6. The build fails with: Provisioning profile "..." doesn't include signing certificate "iPhone Developer: ..."

Manually editing the generated project.pbxproj and replacing "iPhone Developer" with "iPhone Distribution" solves the issue.

Opening the generated project settings in xcode shows you the same error message:
xcode

bug needs more info code signing

Most helpful comment

@PanayotCankov tested --provision with nativescript@next. It works with developer profiles & App Store profiles. But not with adhoc profiles.

tns prepare ios --bundle --provision "match AdHoc nl.energiedirect.selfserviceapp" --release

when I open xcode I see this:
screen shot 2017-05-23 at 14 42 59
when I check the provision profile it looks fine:
screen shot 2017-05-23 at 14 41 03

to be sure I just cleaned my /Users/me/Library/MobileDevice/Provisioning Profiles folder

so now I can't run my adhoc builds with a ci server, because of the manual interaction.

All 12 comments

Confirmed.

Any fixes for this one?

having the same problem.
is there a workaround?

@patrickpereira @spike1292 Edit lib/services/ios-project-service.js.

Find:
identity: mobileprovision.Type === "Development" ? "iPhone Developer" : "iPhone Distribution"

Replace with:
identity: !process.env.CODE_SIGN_IDENTITY ? (mobileprovision.Type === "Development" ? "iPhone Developer" : "iPhone Distribution") : process.env.CODE_SIGN_IDENTITY

Then pass the CODE_SIGN_IDENTITY env variable to your build command.

Hey guys, sorry for not updating you. We haven't got the time to fix this with all the improvements around 3.0.0 RC. We'll consider it for a future release. I also have the same issue and am constantly reminding about it :). For now I recommend you to not use this option and as a workaround set PROVISIONING_PROFILE =

@pkoleva thank you for the update, will try to use the PROVISIONING_PROFILE workaround.
We where using PROVISIONING_PROFILE_SPECIFIER but this is not working any more, any chance you will also support the specifier?

@dbenninger once you use --provision it sets the provision's attributes in the pbxproj and they have higher precedence than the xcconfig. The --provsion should be able to use distribution certificates since #2705. If there is high demand we can either clear the pbxprj if no "--provision" is used or provide special option like "--provision -" or something that would clear its effect. The current design is to allow "tns prepare ios --provsion MyDevProfile" to be called once and skip the --provision flag in subsequent interactions with the CLI during development.

PROVISIONING_PROFILE_SPECIFIER should be good to go again with #2705, we used to check if the xcconfig has PROVISIONING_PROFILE and switch to manual signing mode if it was specified. I've added checks for the specifier too.

@PanayotCankov tested --provision with nativescript@next. It works with developer profiles & App Store profiles. But not with adhoc profiles.

tns prepare ios --bundle --provision "match AdHoc nl.energiedirect.selfserviceapp" --release

when I open xcode I see this:
screen shot 2017-05-23 at 14 42 59
when I check the provision profile it looks fine:
screen shot 2017-05-23 at 14 41 03

to be sure I just cleaned my /Users/me/Library/MobileDevice/Provisioning Profiles folder

so now I can't run my adhoc builds with a ci server, because of the manual interaction.

@PanayotCankov @pkoleva Really hope this is in 3.2.0

@vbresults @spike1292 @patrickpereira @dbenninger

This should be fixed in nativescript@next

Can you please try:

npm un -g nativescript
npm cache clean
npm i -g nativescript@next
tns build ios --provision <id> --release --for-device

Please let us know if you still encounter some issues.

When --provision is used, there should be no signing or provisioning switches configured manually in the build.xcconfig. If you have configured the build.xcconfig use the tns commands without --provision. These are mutually exclusive for the moment.

Providing --provision with development or distribution certificate will set the proper code signing in the pbxproj now.

I can confirm signing with distribution provisioning works in @next and it will be officially released in [email protected].

As @PanayotCankov explained above, --provision is mutually exclusive with provisioning switches configured manually in the build.xcconfig

@vbresults @spike1292 @patrickpereira @dbenninger
Please let us know if you still encounter some issues.

Was this page helpful?
0 / 5 - 0 ratings