Native Builds
Overview
A native build of your application is platform specific and can run on a physical device. Native builds produce native build artifacts such as aab
files for Android and ipa
files for iOS.
After the native build artifacts are generated:
- The binaries will be stored and available for you to download from the dashboard.
- You can find the history and status of your native builds as well as download successful builds in the side menu under
Builds
in theBuild
tab.
The steps of the native build will depend on the framework used to develop the project.
Capacitor/Cordova
Native Builds for both Capacitor and Cordova start with the following steps:
npm install
will run to install any dependencies you have.npm run build
will run if abuild
script is detected in thescripts
section of yourpackage.json
in order to build the web app components for your application.
A native build for a Capacitor project will then follow these steps:
npx cap sync [ios|android]
will run with the platform you have configured. This will copy the newly generated web app components to the corresponding native platform directory and update any native plugins found in that directory.- For an iOS build,
gym
is executed to produce theipa
anddsym
files (orapp
file for Simulator builds). - For an Android build,
gradle
is used to produce theaab
andapk
files.
While a native build for a Cordova project will then follow these steps:
cordova platform add [ios|android]
will run with the platform you have configured.NOTE:
DO NOT commit yourplatforms
directory as this will cause your build to fail.cordova build [ios|android]
will run with the platform and options you have configured and generate the native binaries.
React Native
Native builds for React Native all start with the following steps:
- Detects the package manager and installs dependencies based on configuration or default for package manager (
yarn
,npm ci
, etc.) - Detects if the project is using a React Native variant like Expo.
- For Expo projects, the prebuild command is run to generate native code.
For Expo projects, an ios.bundleIdentifier
for iOS and android.package
for Android must be set in your app.json
for a successful native build.
Then:
- For an iOS build,
gym
is executed to produce theipa
anddsym
files (orapp
file for Simulator builds). - For an Android build,
gradle
is used to produce theaab
andapk
files.
Performing a Build
A native build can be triggered from the Commits or the Build tab.
From your commits list, click "Start build" on the commit you'd like to use to create the native build. You can also click "New build" from the Builds list and select a commit to use.
On the new build page, choose the type of build you want to perform, as well as any signing certificates, custom environment, or native config. Once you have a successful build, you can download it by clicking the file name in the Artifacts
section in the right of the build detail page or clicking the Download IPA/AAB
icon on the build in the Build > Builds
tab.
You can rerun a build from the Builds list or the log of a build. Rerunning a build uses the same stack, environment, configuration, and other settings from the initial build attempt. A new build number and build ID are generated for the rerun, as well as a new build in the Builds list.
Concurrency limits
Each account plan has a defined maximum amount of concurrent builds allowed (see Plans Details). This limit is enforced at the account level across different apps.
When you trigger a build, in the Appflow Dashboard you will notice that a build can have different statuses before it is processed:
- Queued: this means that your build is queued for the next available runner. Usually your build should not be in this state for more than few seconds.
- Pending: this means that you have reached your concurrent build limit and your build will continue when your current builds are completed.
After the build starts to be processed the statuses are:
- Running: the build is currently being processed. You can read the logs in the build details.
- Successful: the build terminated in a correct state.
- Failed: the build terminated in an incorrect state.
More concurrent builds can be added to your plan. If you have a Basic or above plan, please contact us.