Implenent Functionality
This commit is contained in:
+189
-13
@@ -2,23 +2,199 @@
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
AB_HOME="${ANDROID_BUILDER_HOME:-$HOME/android-builder}"
|
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"
|
COMMAND="$1"
|
||||||
shift || true
|
shift || true
|
||||||
|
|
||||||
case "$COMMAND" in
|
case "$COMMAND" in
|
||||||
setup)
|
setup) setup "$@" ;;
|
||||||
echo "Setup command not implemented yet."
|
doctor) doctor "$@" ;;
|
||||||
;;
|
build) build "$@" ;;
|
||||||
doctor)
|
install) install_apk "$@" ;;
|
||||||
echo "Doctor command not implemented yet."
|
help|-h|--help|"") help ;;
|
||||||
;;
|
|
||||||
help|-h|--help|"")
|
|
||||||
echo "AndroidBuilder"
|
|
||||||
echo
|
|
||||||
echo "Usage:"
|
|
||||||
echo " android-builder setup"
|
|
||||||
echo " android-builder doctor"
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
echo "Unknown command: $COMMAND"
|
echo "Unknown command: $COMMAND"
|
||||||
echo "Run: android-builder help"
|
echo "Run: android-builder help"
|
||||||
|
|||||||
Reference in New Issue
Block a user