Implenent Functionality

This commit is contained in:
Dark98
2026-07-02 01:39:27 +01:00
parent f85bb4862a
commit be79efdf4e
+189 -13
View File
@@ -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" <<EOF
# Java for AndroidBuilder
export JAVA_HOME=$JAVA_HOME_DETECTED
export PATH=\$JAVA_HOME/bin:\$PATH
export ANDROID_BUILDER_JAVA_HOME=\$JAVA_HOME
EOF
java -version
echo "JAVA_HOME=$JAVA_HOME"
}
install_cmdline_tools() {
echo "==> 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" <<EOF
org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.caching=true
android.aapt2FromMavenOverride=$PREFIX/bin/aapt2
EOF
}
setup() {
install_packages
configure_java
install_cmdline_tools
configure_android_environment
accept_licenses
install_sdk_platform
configure_gradle
echo
echo "Setup complete."
echo "Run:"
echo " source ~/.bashrc"
echo " android-builder doctor"
}
doctor() {
echo "AndroidBuilder Doctor"
echo
echo "Java:"
java -version || true
echo
echo "Gradle:"
gradle -v | grep Gradle || true
echo
echo "AAPT2:"
aapt2 version || true
echo
echo "SDK:"
echo "$SDK"
test -f "$SDK/platforms/$PLATFORM/android.jar" \
&& echo "android.jar: found" \
|| echo "android.jar: missing"
}
build() {
test -f local.properties || echo "sdk.dir=$SDK" > 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"