#!/data/data/com.termux/files/usr/bin/bash set -e AB_HOME="${ANDROID_BUILDER_HOME:-$HOME/android-builder}" SDK="$HOME/android-sdk" PLATFORM="${ANDROID_BUILDER_PLATFORM:-android-33}" install_packages() { echo "==> Installing Termux packages" pkg update -y pkg install -y git curl wget unzip zip nano \ openjdk-21 gradle aapt2 apksigner d8 dx android-tools } configure_java() { echo "==> Configuring Java" JAVA_BIN="$(command -v java || true)" if [ -z "$JAVA_BIN" ]; then echo "ERROR: java not found after installing openjdk-21." exit 1 fi JAVA_HOME_DETECTED="$(dirname "$(dirname "$(readlink -f "$JAVA_BIN")")")" export JAVA_HOME="$JAVA_HOME_DETECTED" export PATH="$JAVA_HOME/bin:$PATH" touch "$HOME/.bashrc" grep -q 'ANDROID_BUILDER_JAVA_HOME' "$HOME/.bashrc" || cat >> "$HOME/.bashrc" < Installing Android SDK cmdline-tools" mkdir -p "$SDK/cmdline-tools" cd "$SDK/cmdline-tools" if [ ! -d latest ]; then wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O cmdline-tools.zip unzip -q cmdline-tools.zip mv cmdline-tools latest rm cmdline-tools.zip fi } configure_android_environment() { echo "==> Configuring Android SDK environment" touch "$HOME/.bashrc" grep -q 'ANDROID_HOME' "$HOME/.bashrc" || cat >> "$HOME/.bashrc" <<'EOF' # AndroidBuilder SDK environment export ANDROID_HOME=$HOME/android-sdk export ANDROID_SDK_ROOT=$ANDROID_HOME export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH EOF export ANDROID_HOME="$SDK" export ANDROID_SDK_ROOT="$SDK" export PATH="$SDK/cmdline-tools/latest/bin:$PATH" } accept_licenses() { echo "==> Accepting Android SDK licenses" mkdir -p "$SDK/licenses" cat > "$SDK/licenses/android-sdk-license" <<'EOF' 24333f8a63b6825ea9c5514f83c2829b004d1fee d56f5187479451eabf01fb78af6dfcb131a6481e 8933bad161af4178b1185d1a37fbf41ea5269c55 EOF } install_sdk_platform() { echo "==> Installing SDK platform: $PLATFORM" command -v java >/dev/null || { echo "ERROR: Java is not available." exit 1 } command -v sdkmanager >/dev/null || { echo "ERROR: sdkmanager not found." exit 1 } sdkmanager "platforms;$PLATFORM" } configure_gradle() { echo "==> Writing Gradle config" mkdir -p "$HOME/.gradle" cat > "$HOME/.gradle/gradle.properties" < local.properties if [ -f ./gradlew ]; then chmod +x ./gradlew ./gradlew assembleDebug else gradle assembleDebug fi } install_apk() { APK=$(find . -path "*/build/outputs/apk/debug/*.apk" -type f | head -n 1) if [ -z "$APK" ]; then echo "No debug APK found." exit 1 fi termux-open "$APK" } help() { echo "AndroidBuilder" echo echo "Usage:" echo " android-builder setup" echo " android-builder doctor" echo " android-builder build" echo " android-builder install" } COMMAND="$1" shift || true case "$COMMAND" in setup) setup "$@" ;; doctor) doctor "$@" ;; build) build "$@" ;; install) install_apk "$@" ;; help|-h|--help|"") help ;; *) echo "Unknown command: $COMMAND" echo "Run: android-builder help" exit 1 ;; esac