install termux from F-Droid.
apt update
apt upgrade
# source.list changed
apt update
termux-setup-storageapt install git wget proot
git clone https://github.com/MFDGaming/ubuntu-in-termux.git
cd ubuntu-in-termux
# install ubuntu
bash ubuntu.sh -y
# fix PATH order
sed -Ei 's|(:/bin)(:/usr/bin):|\2\1:|' startubuntu.sh
# start
./startubuntu.shNow, in ubuntu.
apt update
apt upgrade
apt install default-jdk-headless openjdk-8-jdk-headless unzip aapt2Download Android Command Line Tools for Linux from https://developer.android.com/studio
cd ~
unzip /sdcard/Download/commandlinetools-linux-9477386_latest.zip
export ANDROID_HOME=$HOME/android/sdk
mkdir -p $ANDROID_HOME/cmdline-tools
mv cmdline-tools $ANDROID_HOME/cmdline-tools/latest
export PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin
# just for fix broken dependencies
JAVA_OPTS=-Dos.arch=amd64 sdkmanager emulator
# install target platforms
sdkmanager 'platforms;android-26'cd project-dir
echo "sdk.dir=$ANDROID_HOME" > local.properties
alias gradlew='JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64 bash ./gradlew'
# first build should fail. it is for downloading aapt2-*-linux.jar
gradlew
# replace aapt2 binary for arm64
find ~/.gradle -name 'aapt2-*-linux.jar' -type f | xargs -I{} jar -u -f {} -C /usr/bin aapt2cd project-dir
gradlew
I managed to get Android APK builds working on an ARM64 Ubuntu PRoot environment (running on Android/Termux) and wanted to share what finally worked for me.
The root cause was that Google's SDK Build Tools ship an x86_64 aapt2 binary for Linux. On ARM64 this fails with:
cannot execute: required file not found
or AGP resource-linking failures because the bundled aapt2 cannot run.
I first tried the Debian ARM64 aapt2 package:
/usr/lib/android-sdk/build-tools/debian/aapt2
but it was too old and failed against modern Android SDK platforms (Android 36 in my case) with errors like:
LoadedArsc.cpp:94 RES_TABLE_TYPE_TYPE entry offsets overlap actual entry data
Failed to load resources table in APK 'android.jar'
The solution was:
https://github.com/ReVanced/aapt2/releases
I used:
aapt2-arm64-v8a
chmod +x ~/tools/aapt2
android.aapt2FromMavenOverride=/root/tools/aapt2
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlin {
jvmToolchain(17)
}
After switching from the old Debian aapt2 to the ReVanced ARM64 build, ./gradlew assembleDebug completed successfully and produced a working APK on ARM64 Ubuntu PRoot.
Hopefully this helps anyone trying to build Android apps natively on ARM64 Linux/Termux environments.
Tested on: