How can I deploy (create .ipa) iphone app using 'cordova build ios --release'?
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.
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
I finally figured out a way to automate this by using xcodeproj, xcode and this ruby script :
require 'xcodeproj'
xcproj = Xcodeproj::Project.open("HelloWorld.xcodeproj")
xcproj.recreate_user_schemes
xcproj.save
And then in the PROJECT_ROOT/platforms/ios/
directory this command helped me to generate my *.ipa
:
xcodebuild -project HelloWorld.xcodeproj -exportArchive -exportFormat ipa -archivePath $(pwd)/HelloWorld.xcarchive -exportPath $(pwd)/HelloWorld.ipa CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO -alltargets -configuration Release
Thought we can sign our .ipa later on :)