- Fix repository link in privacy policy - Add interactive password prompts for release builds - Build .aab bundle instead of APK for Play Store - Add setup-dirs task for build directories
92 lines
3.9 KiB
Makefile
92 lines
3.9 KiB
Makefile
# Tether API build tasks
|
|
|
|
# Docker image for Android builds
|
|
android_image := "cimg/android:2025.12"
|
|
gradle_cache := env_var_or_default("GRADLE_CACHE", justfile_directory() + "/.gradle-cache")
|
|
|
|
# Default task
|
|
default:
|
|
@just --list
|
|
|
|
# Ensure build directories exist with correct permissions
|
|
[private]
|
|
setup-dirs:
|
|
@mkdir -p {{gradle_cache}} .gradle .kotlin build
|
|
@chmod 777 {{gradle_cache}} .gradle .kotlin build 2>/dev/null || true
|
|
|
|
# Build debug APK
|
|
build: setup-dirs
|
|
docker run --rm \
|
|
-v {{justfile_directory()}}:/project \
|
|
-v {{gradle_cache}}:/gradle-cache \
|
|
-e GRADLE_USER_HOME=/gradle-cache \
|
|
-w /project \
|
|
{{android_image}} \
|
|
sh -c './gradlew assembleDebug --no-daemon && chown -R $(stat -c %u:%g /project) /project/.gradle /project/.kotlin /project/app/build 2>/dev/null || true'
|
|
@echo "APK: app/build/outputs/apk/debug/app-debug.apk"
|
|
|
|
# Build release bundle for Play Store (prompts for keystore password)
|
|
release: setup-dirs
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
read -s -p "Keystore password: " KEYSTORE_PASSWORD && echo
|
|
read -p "Key alias [release]: " KEY_ALIAS
|
|
KEY_ALIAS=${KEY_ALIAS:-release}
|
|
read -s -p "Key password (enter for same as keystore): " KEY_PASSWORD && echo
|
|
KEY_PASSWORD=${KEY_PASSWORD:-$KEYSTORE_PASSWORD}
|
|
docker run --rm \
|
|
-v {{justfile_directory()}}:/project \
|
|
-v {{gradle_cache}}:/gradle-cache \
|
|
-e GRADLE_USER_HOME=/gradle-cache \
|
|
-e KEYSTORE_PASSWORD="$KEYSTORE_PASSWORD" \
|
|
-e KEY_ALIAS="$KEY_ALIAS" \
|
|
-e KEY_PASSWORD="$KEY_PASSWORD" \
|
|
-w /project \
|
|
{{android_image}} \
|
|
sh -c './gradlew bundleRelease --no-daemon && chown -R $(stat -c %u:%g /project) /project/.gradle /project/.kotlin /project/app/build 2>/dev/null || true'
|
|
echo "Bundle: app/build/outputs/bundle/release/app-release.aab"
|
|
|
|
# Clean build artifacts
|
|
clean:
|
|
docker run --rm -u root \
|
|
-v {{justfile_directory()}}:/project \
|
|
-w /project \
|
|
{{android_image}} \
|
|
rm -rf app/build build .gradle .kotlin
|
|
@echo "Cleaned"
|
|
|
|
# Run gradle tasks
|
|
gradle *ARGS: setup-dirs
|
|
docker run --rm \
|
|
-v {{justfile_directory()}}:/project \
|
|
-v {{gradle_cache}}:/gradle-cache \
|
|
-e GRADLE_USER_HOME=/gradle-cache \
|
|
-w /project \
|
|
{{android_image}} \
|
|
sh -c './gradlew {{ARGS}} --no-daemon && chown -R $(stat -c %u:%g /project) /project/.gradle /project/.kotlin /project/app/build 2>/dev/null || true'
|
|
|
|
# Generate icons from SVG
|
|
icons:
|
|
inkscape assets/icon.svg -w 512 -h 512 -o assets/icon-512.png
|
|
inkscape assets/icon.svg -w 192 -h 192 -o app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
|
|
inkscape assets/icon.svg -w 144 -h 144 -o app/src/main/res/mipmap-xxhdpi/ic_launcher.png
|
|
inkscape assets/icon.svg -w 96 -h 96 -o app/src/main/res/mipmap-xhdpi/ic_launcher.png
|
|
inkscape assets/icon.svg -w 72 -h 72 -o app/src/main/res/mipmap-hdpi/ic_launcher.png
|
|
inkscape assets/icon.svg -w 48 -h 48 -o app/src/main/res/mipmap-mdpi/ic_launcher.png
|
|
cp app/src/main/res/mipmap-xxxhdpi/ic_launcher.png app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
|
|
cp app/src/main/res/mipmap-xxhdpi/ic_launcher.png app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
|
|
cp app/src/main/res/mipmap-xhdpi/ic_launcher.png app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
|
|
cp app/src/main/res/mipmap-hdpi/ic_launcher.png app/src/main/res/mipmap-hdpi/ic_launcher_round.png
|
|
cp app/src/main/res/mipmap-mdpi/ic_launcher.png app/src/main/res/mipmap-mdpi/ic_launcher_round.png
|
|
inkscape assets/feature-graphic.svg -w 1024 -h 500 -o assets/feature-graphic.png
|
|
@echo "Generated all icons"
|
|
|
|
# Install APK on connected device
|
|
install: build
|
|
adb install -r app/build/outputs/apk/debug/app-debug.apk
|
|
|
|
# Generate keystore for release signing
|
|
keystore:
|
|
keytool -genkey -v -keystore keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias release
|
|
@echo "Created keystore.jks - keep this safe!"
|