From 7c32d315dbdbce6f1cb0370d59a4cac85d2f04db Mon Sep 17 00:00:00 2001 From: Dark98 Date: Thu, 2 Jul 2026 02:31:02 +0100 Subject: [PATCH] Updates --- bin/android-builder | 358 +++++++++++++++++++++++++++++++++----------- 1 file changed, 268 insertions(+), 90 deletions(-) diff --git a/bin/android-builder b/bin/android-builder index 549af11..4266c72 100755 --- a/bin/android-builder +++ b/bin/android-builder @@ -5,45 +5,52 @@ AB_HOME="${ANDROID_BUILDER_HOME:-$HOME/android-builder}" SDK="$HOME/android-sdk" PLATFORM="${ANDROID_BUILDER_PLATFORM:-android-33}" -install_packages() { - echo "==> Installing Termux packages" +get_project_name() { + if [ -f settings.gradle ]; then + DETECTED_NAME="$(grep -E '^rootProject.name[[:space:]]*=' settings.gradle \ + | sed -E 's/.*=[[:space:]]*["'\'']?([^"'\'' ]+)["'\'']?.*/\1/' \ + | head -n 1)" + + [ -n "$DETECTED_NAME" ] && echo "$DETECTED_NAME" && return + fi + + basename "$PWD" +} + +get_build_type() { + echo "${ANDROID_BUILDER_BUILD_TYPE:-debug}" +} + +get_apk_path() { + case "$(get_build_type)" in + debug) echo "app/build/outputs/apk/debug/app-debug.apk" ;; + release) echo "app/build/outputs/apk/release/app-release.apk" ;; + *) return 1 ;; + esac +} + +setup() { + echo "==> Installing 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_BIN="$(command -v java)" 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" <> "$HOME/.bashrc" < Installing Android SDK cmdline-tools" - mkdir -p "$SDK/cmdline-tools" cd "$SDK/cmdline-tools" @@ -53,107 +60,229 @@ install_cmdline_tools() { mv cmdline-tools latest rm cmdline-tools.zip fi -} -configure_android_environment() { - echo "==> Configuring Android SDK environment" + export ANDROID_HOME="$SDK" + export ANDROID_SDK_ROOT="$SDK" + export PATH="$SDK/cmdline-tools/latest/bin:$PATH" - touch "$HOME/.bashrc" - - grep -q 'ANDROID_HOME' "$HOME/.bashrc" || cat >> "$HOME/.bashrc" <<'EOF' + grep -q 'ANDROID_HOME' "$HOME/.bashrc" || cat >> "$HOME/.bashrc" <<'EOF2' # 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 +EOF2 - 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' + cat > "$SDK/licenses/android-sdk-license" <<'EOF2' 24333f8a63b6825ea9c5514f83c2829b004d1fee d56f5187479451eabf01fb78af6dfcb131a6481e 8933bad161af4178b1185d1a37fbf41ea5269c55 -EOF -} +EOF2 -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" < "$HOME/.gradle/gradle.properties" < "$NAME/settings.gradle" < "$NAME/build.gradle" <<'EOF2' +// Root build file intentionally minimal. +EOF2 + + cat > "$NAME/gradle.properties" < "$NAME/local.properties" < "$NAME/app/build.gradle" < "$NAME/app/src/main/AndroidManifest.xml" <<'EOF2' + + + + + + + + + + +EOF2 + + cat > "$NAME/app/src/main/res/values/strings.xml" < + $NAME + +EOF2 + + cat > "$NAME/app/src/main/res/values/styles.xml" <<'EOF2' + + + +EOF2 + + cat > "$NAME/app/src/main/java/$PACKAGE_PATH/MainActivity.java" < "$NAME/gradlew" <<'EOF2' +#!/data/data/com.termux/files/usr/bin/bash +set -e +exec gradle "$@" +EOF2 + + chmod +x "$NAME/gradlew" + + echo "Created project: $NAME" + echo + echo "Next:" + echo " cd $NAME" + echo " android-builder build" + echo " android-builder export" +} + build() { test -f local.properties || echo "sdk.dir=$SDK" > local.properties @@ -165,15 +294,61 @@ build() { fi } -install_apk() { - APK=$(find . -path "*/build/outputs/apk/debug/*.apk" -type f | head -n 1) +export_apk() { + APK="$(get_apk_path)" + BUILD_TYPE="$(get_build_type)" - if [ -z "$APK" ]; then - echo "No debug APK found." + if [ ! -f "$APK" ]; then + echo "No $BUILD_TYPE APK found." + echo + echo "Run:" + echo " android-builder build" exit 1 fi - termux-open "$APK" + if [ ! -d "$HOME/storage" ]; then + echo "==> Termux storage has not been configured." + echo "==> Requesting storage permission..." + echo + + termux-setup-storage + + echo + echo "Please grant storage permission, then run:" + echo " android-builder export" + exit 0 + fi + + EXPORT_DIR="$HOME/storage/documents" + mkdir -p "$EXPORT_DIR" + + PROJECT_NAME="$(get_project_name)" + DEST="$EXPORT_DIR/${PROJECT_NAME}.apk" + + echo "==> Exporting APK..." + + cp -f "$APK" "$DEST" + sync + + SIZE="$(du -h "$DEST" | cut -f1)" + + echo + echo "✓ Export complete!" + echo + echo "Project:" + echo " $PROJECT_NAME" + echo + echo "Build:" + echo " $BUILD_TYPE" + echo + echo "Size:" + echo " $SIZE" + echo + echo "Location:" + echo " $DEST" + echo + echo "Open your file manager, browse to Documents," + echo "then tap ${PROJECT_NAME}.apk to install or share it." } help() { @@ -182,8 +357,10 @@ help() { echo "Usage:" echo " android-builder setup" echo " android-builder doctor" + echo " android-builder new MyApp" + echo " android-builder new MyApp --template empty" echo " android-builder build" - echo " android-builder install" + echo " android-builder export" } COMMAND="$1" @@ -192,8 +369,9 @@ shift || true case "$COMMAND" in setup) setup "$@" ;; doctor) doctor "$@" ;; + new) new_project "$@" ;; build) build "$@" ;; - install) install_apk "$@" ;; + export) export_apk "$@" ;; help|-h|--help|"") help ;; *) echo "Unknown command: $COMMAND"