feat: initial ThinkCentre setup repo — Android, Ollama, Otto migration docs + scripts

This commit is contained in:
Otto
2026-03-17 11:15:12 +01:00
commit 95f90c7dcb
8 changed files with 539 additions and 0 deletions
+82
View File
@@ -0,0 +1,82 @@
#!/bin/bash
# Android APK Build Wrapper — ThinkCentre 1
# Usage: bash build.sh <app> [branch]
# app: staysober | blockblitz | ticked
# branch: main (default)
#
# Output: /var/www/downloads/<app>/<app>-latest.apk
# Served: http://192.168.0.91:8080/<app>/
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 <app> [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"
+60
View File
@@ -0,0 +1,60 @@
#!/bin/bash
# Android SDK Setup for ThinkCentre 1
# Run as secondclaw — installs Java 17 + Android SDK + NDK
# Usage: bash setup.sh
set -e
ANDROID_HOME="$HOME/android-sdk"
SDK_TOOLS_URL="https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip"
echo "=== Android Build Environment Setup ==="
# Java 17
echo "[1/5] Java 17..."
sudo apt-get update -qq
sudo apt-get install -y -qq openjdk-17-jdk-headless wget unzip curl
java --version
# Android CLI Tools
echo "[2/5] Android Command Line Tools..."
mkdir -p "$ANDROID_HOME/cmdline-tools"
cd /tmp
wget -q "$SDK_TOOLS_URL" -O cmdline-tools.zip
unzip -q cmdline-tools.zip -d "$ANDROID_HOME/cmdline-tools"
mv "$ANDROID_HOME/cmdline-tools/cmdline-tools" "$ANDROID_HOME/cmdline-tools/latest"
rm cmdline-tools.zip
# Environment
echo "[3/5] Environment variables..."
if ! grep -q ANDROID_HOME ~/.bashrc; then
cat >> ~/.bashrc << EOF
# Android SDK
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
EOF
fi
export ANDROID_HOME
export PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools"
# SDK Components
echo "[4/5] SDK components (platform-tools, android-34, build-tools, NDK r26b)..."
yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" \
--sdk_root="$ANDROID_HOME" \
"platform-tools" \
"platforms;android-34" \
"build-tools;34.0.0" \
"ndk;26.1.10909125"
# Accept licenses
echo "[5/5] Accepting licenses..."
yes | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --sdk_root="$ANDROID_HOME" --licenses > /dev/null 2>&1 || true
echo ""
echo "=== Done ==="
java --version
"$ANDROID_HOME/platform-tools/adb" version
echo "ANDROID_HOME=$ANDROID_HOME"
echo ""
echo "Reload shell: source ~/.bashrc"