Ionic is a complete open-source SDK for hybrid mobile app development. Built on top of AngularJS and Apache Cordova, Ionic provides tools and services for developing hybrid mobile apps using Web technologies like CSS, HTML5, and Sass. Apps can be built with these Web technologies and then distributed through native app stores to be installed on devices by leveraging Cordova1.
This tutorial guides you through setting up your iOS app in Nevercode. Nevercode doesn't require any kind of additional software from your side and you don’t even have to write any tedious configuration files full of technical boilerplate. We’ll scan your repository and from what you have there our builders find everything they need. You’ll just have to confirm what configuration you want to build.
The guide covers how to:
Ionic Project Structure
To identify an app as Ionic, Nevercode looks for a "signature" comprised of 2 components. Note that for Ionic 2 both these steps are generated automatically, when you add a new app with
ionic start command. If apps are created with older Ionic versions, you'd need to provide one extra step.
Cordova namespace must be correctly specified in the config.xml file in the root folder of your project. Here's what this looks like :
<widget id="com.your.project" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
the presence of the ionic.project or ionic.config.json file in the root folder of you project. This file is not created immediately after a new Ionic one project is started from the CLI. You could add it manually, but even though it’s tiny and simple, why not let Ionic do it for you: just run
ionic servefrom your project’s folder. This will open a browser window in which you can see your shiny new app, but more importantly it will create the ionic.project file. Don't forget to add it to source control and commit.
If your project began its life as Ionic, and you've run
ionic serve, then everything should be in place. However, users who are converting their existing projects to Ionic (we usually see this with Cordova and PhoneGap projects) need to take extra care to ensure that all these elements of the Ionic "signature" are present and committed to source control before adding their project to Nevercode.
That's how your dashboard looks like after you've signed up.
After specifying app repository, Nevercode takes a first look at it by listing the
branches in this repository. The next step for you is to select the branch you want Nevercode to scan for projects from.
- Select a branch from the dropdown that Nevercode should scan. Note that you can change the branch later if needed.
- Click Scan branch. Nevercode scans the repository from the specified branch. This includes cloning the repository, looking for projects from it and searching for the configurations.
All these actions can be monitored real-time from your browser via the live log window.
We're scanning your repo, looking for apps to build.
Once scanning the branch has finished, you need to do the following:
- Select a project or a workspace. The Project selection here means a directory in your repository where your Ionic configuration file
- Select an option in Configuration dropdown, so Nevercode knows whether to build either
releaseversion of your app.
- Select the platform for which you'd like to build your app for (Android or iOS, or for both platforms).
Now that you are done with the build configuration, all that is left to provide the corresponding code signing files.
Configuring your project.
Usually Ionic applications depend on additional Node modules. Nevercode installs the dependencies listed out in your project's
package.json file automatically with
npm install right after your repository is cloned for building.
In depth overview of signing Android binaries is available under section Signing Android binaries in Cordova.
To sign iOS binaries please follow the corresponding tutorial for iOS apps.
Signing configuration in build configuration file
Build distribution is an integral part of app development life cycle. Nevercode supports publishing your build artefacts to several distribution channels such as:
- Google Play
- Beta by Crashlytics
- TestFlight Beta Testing in iTunes Connect
If you'd like to generate a release build of your app for publishing to the Apple App Store, there are a few additional steps you need to take. These are detailed in Ionic documentation.
To make your build version management easy, Nevercode exports two environment variables that you can use in your build scripts:
NEVERCODE_BUILD_NUMBER. You can read more about it from Incrementing Ionic app version.
What commands does Nevercode run to build my Ionic app?
For the sake of debugging your builds, it may be helpful for you to know what happens under the hood when Nevercode builds your Ionic project. The following commands are executed:
ionic platform rm <platform>
ionic platform add <platform>
ionic build <platform> --<target> --device
If your project has multiple platforms, commands 1-3 will be executed once for each platform. In the 3rd command,
<target> represents either
release, as per your build settings.
Once Nevercode has incorrectly detected the repository with a given platform (be it Android, iOS or Cordova or Ionic), additional rescans will not change the platform.
To try again you must delete the existing app and add it from scratch.
The most likely cause is that your application does not meet the three requirements specified above in the Ionic Project Structure section. You are probably making use of the npm, bower and gulp toolchain to template your project which can throw Nevercode off, because in that case the necessary files for proper detection are not in place when scanning the project.
The easiest way to fix this issue is to add a custom build step (a post-clone script,
NC_POST_CLONE_SCRIPT) which installs the necessary dependencies and performs the extra tasks which are required for initializing your project.
Here is an example of a post-clone script which initializes an Ionic project.
set -e bower install gulp