diff --git a/bin/android-builder b/bin/android-builder index 8321ce8..549af11 100755 --- a/bin/android-builder +++ b/bin/android-builder @@ -2,23 +2,199 @@ 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) - echo "Setup command not implemented yet." - ;; - doctor) - echo "Doctor command not implemented yet." - ;; - help|-h|--help|"") - echo "AndroidBuilder" - echo - echo "Usage:" - echo " android-builder setup" - echo " android-builder doctor" - ;; + setup) setup "$@" ;; + doctor) doctor "$@" ;; + build) build "$@" ;; + install) install_apk "$@" ;; + help|-h|--help|"") help ;; *) echo "Unknown command: $COMMAND" echo "Run: android-builder help"