#!/bin/bash # Android APK Build Wrapper — ThinkCentre 1 # Usage: bash build.sh [branch] # app: staysober | blockblitz | ticked # branch: main (default) # # Output: /var/www/downloads//-latest.apk # Served: http://192.168.0.91:8080// set -e APP="${1:-}" BRANCH="${2:-main}" BUILD_DIR="/tmp/builds" SERVE_DIR="/var/www/downloads" GIT_BASE="git@192.168.0.34" # Pi git server # App → repo mapping declare -A REPOS=( [staysober]="ottobringts/staysober" [blockblitz]="ottobringts/blockblitz" [ticked]="ottobringts/obsidian-tasks-app" ) if [[ -z "$APP" || -z "${REPOS[$APP]}" ]]; then echo "Usage: $0 [branch]" echo "Apps: ${!REPOS[@]}" exit 1 fi REPO="${REPOS[$APP]}" WORK_DIR="$BUILD_DIR/$APP" APK_OUT="$SERVE_DIR/$APP" echo "=== Building $APP ($BRANCH) ===" echo "Repo: $REPO" # Clone / pull if [ -d "$WORK_DIR/.git" ]; then echo "Pulling latest..." cd "$WORK_DIR" git fetch origin git checkout "$BRANCH" git pull origin "$BRANCH" else echo "Cloning..." mkdir -p "$BUILD_DIR" git clone --branch "$BRANCH" "https://github.com/$REPO.git" "$WORK_DIR" cd "$WORK_DIR" fi # Set ANDROID_HOME export ANDROID_HOME="$HOME/android-sdk" export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/34.0.0" # Expo prebuild if needed if [ -f "app.json" ] && grep -q '"expo"' app.json; then echo "Expo project detected — running prebuild..." npx expo prebuild --platform android --no-install 2>&1 | tail -5 fi # Gradle build echo "Running Gradle assembleRelease..." cd android 2>/dev/null || cd . chmod +x gradlew ./gradlew assembleRelease --no-daemon --quiet 2>&1 | tail -20 # Find and copy APK APK=$(find . -name "*.apk" -path "*/release/*" | head -1) if [ -z "$APK" ]; then echo "ERROR: No APK found!" exit 1 fi mkdir -p "$APK_OUT" cp "$APK" "$APK_OUT/$APP-latest.apk" echo "" echo "=== Build complete ===" echo "APK: $APK_OUT/$APP-latest.apk" echo "URL: http://192.168.0.91:8080/$APP/$APP-latest.apk" ls -lh "$APK_OUT/$APP-latest.apk"