When you are done developing locally and testing and debugging your app via ionic serve
it is time to build your app as a native app that can be deployed to simulators, emulators or devices.
You can do this in a number of different ways that all have slightly different results with advantages and disadvantages. You should know these differences:
Build via native tooling
If you open the native project (platforms/ios
or platforms/android
) directly in Android Studio or Xcode you can simply build the native platform project. This skips both Ionic CLI and Cordova CLI builds and just builds the current state of the native platform project. Skipping these means that there is no update of what is in www
(because no Ionic build) and also copy of www
over to the native platform directory and no evaluation of config.xml
that defines your app name, version, configuration etc. (For the first build of an app this won’t work at all as no www
has ever been copied over before and you have to use 2) or 3)).
Build via Cordova
Alternatively you can cordova build ios/android --release
which skips the Ionic build, but then builds the Cordova project and finally the native platform project. This build takes whatever is already built inside www
of your project folder - so you have to make sure it is the correct version.
Build via Ionic
If you run ionic cordova build ios/android [--prod](TODO) --release
this builds the Ionic project first (src
gets compiled into www
), then the Cordova project (www
and finally the native platform project that packages the result into an app file. This is the only option that allows you to choose the --prod
parameter to indicate an Ionic production build.
These build methods get “slower” from 1) to 2) to 3) as they have to do more things. But they also get more “current”: 1) only refreshes the native part with each build, 2) additionally the Cordova part but only 1) also creates a new build of the Ionic project.
If you have a Cordova project not using Ionic, 3) gets replaced with whatever process is used to build your HTML/JS app. If it doesn’t have a build step, you can just ignore 3) and look at the differences between 2) and 1).
Safest option is to always build with 3) Ionic CLI. That way you can be sure you get exactly the result you want to get.
If you only have to test something in different devices or simulators, feel free to use 1) with Xcode or Android Studio.