iOS Shell Tool Guide

This guide shows how to use Cordova's set of platform-centered shell tools to develop iOS apps. This development path, discussed in the Overview, may offer you a greater range of development options for iOS than the cross-platform CLI tool described in The Command-Line Interface. For example, you need to use shell tools when deploying a custom Cordova WebView alongside native components. Before using either development path, you must first configure the SDK environment as described in the iOS Platform Guide. These tools rely upon Xcode's command-line tools such as xcode-select and xcodebuild.

To enable shell tools for iOS, download Cordova from cordova.apache.org. The download contains separate archives for each platform. Expand each you wish to target, ios in this case. The relevant tools are typically available in the top-level bin directory, otherwise consult the README file for more detailed directions.

These tools allow you to create, build, and run iOS apps. For information on the additional command-line interface that enables plugin features across all platforms, see Using Plugman to Manage Plugins. See Application Plugins for details on how to develop plugins.

Create a Project

Run the create command, specifying the existing path to the project, the reverse-domain-style package identifier, and the app's display name.

    $ ./path/to/cordova-ios/bin/create /path/to/my_new_project com.example.project_name ProjectName

Build a Project

    $ /path/to/my_new_project/cordova/build

Run App on an Emulator

    $ /path/to/my_new_project/cordova/run --emulator

Run App on a Device

    $ /path/to/my_new_project/cordova/run --device

Signing the App

You can learn more about signing, distributing iOS apps, creating a certificate and provisioning profile on the iOS Developer Library.

To sign the app in Cordova you need the following:

  • Code signing identity (--codeSignIdentity): Using XCode you can create a new iOS signing identity and add it to your keychain. The type of of the code signing identity - typically distribution or development, needs to be specified here.

  • Provisioning profile (--provisioningProfile): Using the Apple Member Center you can create a provisioning profile. Download the provisioning profile onto your machine and launch it in XCode to register it. It is copied here on your Mac: ~/Library/MobileDevice/Provisioning\ Profiles/. Opening it in a text editor, you can find the UUID which needs to be specified here.

  • Code signing resource rules(--codeSignResourceRules) (Optional): Allows you to specify custom signing resource rules.

These parameters can be specified using the command line arguments above to build or run scripts:

    $ /path/to/my_new_project/cordova/build --codeSignIdentity="iPhone Distribtion" --provisioningProfile="926c2bd6-8de9-4c2f-8407-1016d2d12954" 

Alternatively, you could specify them in a build configuration file (build.json) using (--buildConfig) argument. Here's a sample of a build configuration file:

{
     "ios": {
         "debug": {
             "codeSignIdentity": "iPhone Development",
             "provisioningProfile": "926c2bd6-8de9-4c2f-8407-1016d2d12954"
         },
         "release": {
             "codeSignIdentity": "iPhone Distribution",
             "provisioningProfile": "70f699ad-faf1-4adE-8fea-9d84738fb306"
         }
     }
 }

There is also support to mix and match command line arguments and parameters in build.json file. Values from the command line arguments will get precedence.

Logging

    $ /path/to/my_new_project/cordova/log