Implenent Functionality
This commit is contained in:
+189
-13
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user