Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I deploy (create .ipa) iphone app using 'cordova build ios --release'?

I have created a 'helloworld' iOS app with cordova using there documentation. The app successfully runs when I run cordova emulate ios. What I can't do, is while deploying when I run cordova build --release. It doesn't create any .ipa files there. All I find is a Helloworld.build file in the PROJECT_ROOT/platforms/ios/build directory. Am I missing something here?

like image 485
MD. Mohiuddin Ahmed Avatar asked Jun 05 '14 13:06

MD. Mohiuddin Ahmed


2 Answers

I found this command which worked for me:

cordova build ios --device cd platforms/ios/build/device /usr/bin/xcrun -sdk iphoneos PackageApplication "$(pwd)/$PROJECT_NAME.app" -o "$(pwd)/$PROJECT_NAME.ipa" 

Source: http://www.splinter.com.au/xcode-4-command-line-builds-of-iphone-apps/

I did run @MD. Mohiuddin Ahmed's Ruby script first, which would have changed my xcodeproj file. I'm not sure if that was necessary but I don't think so.

Update for XCode 8: As a commenter has noted, PackageApplication has been removed from XCode 8. To update the process, see the question: What's the replacement for Xcode's PackageApplication?

Edited to clarify process by adding cordova build command as suggested by comments.

like image 165
Dave Burt Avatar answered Sep 17 '22 19:09

Dave Burt


If you are using cordova ios 3.9.0 or newer, you can use this command to create the .ipa directly from the CLI with no extra commands:

cordova build ios --device --release 

You'll need a build.json file on the root of your project

{   "ios": {     "debug": {       "codeSignIdentity": "iPhone Developer",       "provisioningProfile": "your-dev-provisioning-profile-UUID-here"     },     "release": {       "codeSignIdentity": "iPhone Distribution",       "provisioningProfile": "your-distribution-provisioning-profile-UUID-here"     }   } } 

To get the UUID I open the .mobileprovision file on a text editor and search for 'UUID', not sure if there is an easier way of finding it.

If using Xcode 8 the build.json needs developmentTeam field and packageType field, but not longer need the provisioning profile, also, the codeSignIdentity should be iPhone Developer for both debug and release:

{     "ios": {         "debug": {             "codeSignIdentity": "iPhone Developer",             "developmentTeam": "FG35JLLMXX4A",             "packageType": "development"         },         "release": {             "codeSignIdentity": "iPhone Developer",             "developmentTeam": "FG35JLLMXX4A",             "packageType": "app-store"         }     } } 

http://cordova.apache.org/docs/en/6.x/guide/platforms/ios/index.html#using-buildjson

like image 42
jcesarmobile Avatar answered Sep 17 '22 19:09

jcesarmobile