Skip to main content

Android Build Stacks

For each Android build, Appcircle creates a brand new virtual machine;

  • If you select "Appcircle Linux Pool (x86_64)", virtual machine will be Debian 11 Bullseye.
  • If you select "Appcircle Standard macOS Pool (arm64)", virtual machine will be macOS Sonoma 14.5 or macOS Monterey 12.6.
info

If you select Appcircle Standard macOS Pool (arm64), you can not choose macOS version. It will be automatically selected by Appcircle.

The chance is equal for both macOS Sonoma and macOS Monterey for your android build because it does not effect your build.

Virtual machines are created and they become ready for build within seconds.

During the build process, you can install any dependencies and run commands using custom script steps in the build workflow. This gives you complete control over your build and the virtual machine.

info

Please note that virtual machines are wiped off after a build is executed (no matter success or fail) and anything you installed in the virtual machine will be gone.

Java Version

Build agents have Java 8, 11, 17 and 21 installed. Java 17 is set as the default version.

If you want to use a different Java version, please add the Select Java Version component to your workflow.

When you select "Appcircle Linux Pool (x86_64)" for Android builds, the following JDK locations are available within the environment variables:

  • JAVA_HOME_8_X64: /root/.sdkman/candidates/java/8.0.392-zulu
  • JAVA_HOME_11_X64: /root/.sdkman/candidates/java/11.0.21-zulu
  • JAVA_HOME_17_X64: /root/.sdkman/candidates/java/17.0.9-zulu
  • JAVA_HOME_21_X64: /root/.sdkman/candidates/java/21.0.2-zulu
tip

We're deprecating Intel-based runners and transitioning our customers to Apple silicon-based (M-series) build machines.

Although Intel-based runners are actively maintained, if your app does not specifically require an Intel-based build machine, we suggest using the "Appcircle Standard macOS Pool (arm64)", since it has much more build capacity and the latest updates as well.

When you select "Appcircle Standard macOS Pool (arm64)" for Android builds, the following JDK locations are available within the environment variables:

  • JAVA_HOME_8_X64: /Users/appcircle/.sdkman/candidates/java/8.0.392-zulu
  • JAVA_HOME_11_X64: /Users/appcircle/.sdkman/candidates/java/11.0.21-zulu
  • JAVA_HOME_17_X64: /Users/appcircle/.sdkman/candidates/java/17.0.9-zulu
  • JAVA_HOME_21_X64: /Users/appcircle/.sdkman/candidates/java/21.0.2-zulu

Emulator

Build agents have Pixel_3a Android 9.0 emulator pre-installed. You may add or remove other emulators by using sdkmanager. For example, in order to install Android 11 (API 30) emulator to x86_64 Linux, you can take the below steps:

1. Install emulator system image if not exists. (If it exists, the command will return quickly with success.)

sdkmanager "system-images;android-30;google_apis;x86_64"

You can see a list of available system images with the below command:

sdkmanager --list | grep "system-images;android"

2. Create new pixel_3a device with "Pixel_Custom" emulator name.

avdmanager create avd -n Pixel_Custom -k "system-images;android-30;google_apis;x86_64" -c 512M -d pixel_3a

When completed with success, you should see below the device with avdmanager list avd:

    Name: Pixel_Custom
Device: pixel_3a (Google)
Path: /users/appcircle/.android/avd/Pixel_Custom.avd
Target: Google APIs (Google Inc.)
Based on: Android 11.0 (R)
Tag/ABI: google_apis/x86_64
Sdcard: 512 MB
caution

If you're using UI tests with emulators, you must select an Intel device (Appcircle Linux Pool (x86_64)) since M-series virtual machines (Appcircle Standard macOS Pool (arm64)) don't support nested virtualization.

Android Build Agent Stacks

There are many pre-installed packages in virtual machines. You can get a full list of pre-installed packages by running Bash commands in custom script steps.

Here are some most important packages installed in our Linux and macOS images used for Android builds:

PackageDebian BullseyemacOS Sonoma macOS Monterey
Apt Package Manager2.2.4n/An/A
Bash5.1.43.2.573.2.57
GNU Binutils2.35.22.422.39
Bzip21.0.8n/An/A
Curl7.74.08.6.07.79.1
GCC10.2.116.0.014.0.0
Git2.35.12.45.22.38.1
Git LFS2.13.23.5.13.2.0
Gradle4.4.18.87.5.1
Gzip1.10430.100.5353.100.22
Java17.0.917.0.917.0.9
Maven3.9.93.9.73.8.6
Node JS18.20.518.20.318.19.1
OpenSSL1.1.13.3.62.8.3
Perl5.32.15.34.15.30.3
Python3.9.23.12.33.10.8
Rake13.2.113.0.613.0.1
Rbenv1.3.01.2.01.2.0
Ruby3.2.33.2.32.7.5
Unzip6.006.006.00
Wget1.211.24.51.21
Yarn1.22.221.22.221.22.19
Zip3.03.03.0

Using your own computer for build

Appcircle supports using a third-party computer to perform builds. You can create your own build environment by installing the operating system and other tools and dependencies you need to tell Appcircle to use that environment to perform builds.

File Icon

Appcircle Self-hosted Runner