docs(plan): adapt foundation plan to actual dev toolchain

Dev machine has no host gradle binary; bootstrap from HouseHoldKeaper's
wrapper (Gradle 8.14, compatible with AGP 8.7.2). Default JDK is 26,
but AGP 8.7.2 needs JDK 17-21; require JAVA_HOME=jdk-17 on local
invocations. CI is unaffected (setup-java pins 17).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jean-Luc Makiola
2026-06-08 14:46:05 +02:00
parent 42a1183b6f
commit f13523c865

View File

@@ -7,7 +7,7 @@
**Architecture:** Single Gradle module `:app`, Kotlin 2.1 + Jetpack Compose mit Material 3 Expressive (1.5+), Hilt für DI, DataStore-Preferences für App-Settings. Build via Gradle Kotlin DSL und Version Catalog (`libs.versions.toml`). CI über Gitea Workflows (adaptiert von HouseHoldKeaper, Flutter-Steps durch Gradle-Steps ersetzt). Alle Resourcen + Strings i18n-fähig ab Tag 1 (DE + EN). **Architecture:** Single Gradle module `:app`, Kotlin 2.1 + Jetpack Compose mit Material 3 Expressive (1.5+), Hilt für DI, DataStore-Preferences für App-Settings. Build via Gradle Kotlin DSL und Version Catalog (`libs.versions.toml`). CI über Gitea Workflows (adaptiert von HouseHoldKeaper, Flutter-Steps durch Gradle-Steps ersetzt). Alle Resourcen + Strings i18n-fähig ab Tag 1 (DE + EN).
**Tech Stack:** **Tech Stack:**
- Kotlin 2.1.0, Gradle 8.11.1, AGP 8.7.2, JVM Target 17 - Kotlin 2.1.0, Gradle 8.14 (bootstrapped from HouseHoldKeaper's wrapper), AGP 8.7.2, JVM Target 17
- minSdk 29, targetSdk 36, compileSdk 36 - minSdk 29, targetSdk 36, compileSdk 36
- Jetpack Compose BOM 2025.05.00, Material3 1.5.0 (Expressive APIs) - Jetpack Compose BOM 2025.05.00, Material3 1.5.0 (Expressive APIs)
- Hilt 2.53 + KSP 2.1.0-1.0.29 - Hilt 2.53 + KSP 2.1.0-1.0.29
@@ -140,12 +140,9 @@ local, WebCal subscriptions, ...) is shown.
## Building ## Building
Requires Android SDK 36 and JDK 17. Requires Android SDK 36 and JDK 17. The Gradle wrapper is checked in, so no host Gradle install is needed:
```bash ```bash
# Bootstrap the gradle wrapper (one-time, requires a host gradle install)
gradle wrapper --gradle-version 8.11.1 --distribution-type bin
# Build debug APK # Build debug APK
./gradlew assembleDebug ./gradlew assembleDebug
@@ -156,6 +153,12 @@ gradle wrapper --gradle-version 8.11.1 --distribution-type bin
./gradlew lint ./gradlew lint
``` ```
If your default JDK is something other than 17, set `JAVA_HOME` explicitly:
```bash
JAVA_HOME=/path/to/jdk-17 ./gradlew assembleDebug
```
## License ## License
[MIT](LICENSE) — Jean-Luc Makiola, 2026 [MIT](LICENSE) — Jean-Luc Makiola, 2026
@@ -675,35 +678,35 @@ kotlin.incremental=true
android.uniquePackageNames=true android.uniquePackageNames=true
``` ```
- [ ] **Step 5: Bootstrap the Gradle wrapper** - [ ] **Step 5: Bootstrap the Gradle wrapper from sibling project**
This requires a host `gradle` installation. Run once: The dev machine has no host `gradle` installed, but `HouseHoldKeaper/android/` already has a working wrapper (Gradle 8.14). Bootstrap from there:
```bash
gradle wrapper --gradle-version 8.11.1 --distribution-type bin
```
Expected: creates `gradle/wrapper/gradle-wrapper.jar`, `gradle/wrapper/gradle-wrapper.properties`, `gradlew`, `gradlew.bat`.
Then make `gradlew` executable:
```bash ```bash
mkdir -p gradle/wrapper
cp /home/jlmak/Projects/jlmak/HouseHoldKeaper/android/gradlew .
cp /home/jlmak/Projects/jlmak/HouseHoldKeaper/android/gradlew.bat .
cp /home/jlmak/Projects/jlmak/HouseHoldKeaper/android/gradle/wrapper/gradle-wrapper.jar gradle/wrapper/
cp /home/jlmak/Projects/jlmak/HouseHoldKeaper/android/gradle/wrapper/gradle-wrapper.properties gradle/wrapper/
chmod +x gradlew chmod +x gradlew
``` ```
- [ ] **Step 6: Verify gradle wrapper works** Gradle 8.14 is compatible with AGP 8.7.2 (Gradle is backward-compatible for AGP versions; newer Gradle works fine).
- [ ] **Step 6: Verify gradle wrapper works (with JDK 17)**
The system default JDK is 26, but AGP 8.7.2's compatibility envelope is JDK 1721. Use JDK 17 explicitly for every gradle invocation in this plan:
```bash ```bash
./gradlew --version JAVA_HOME=/usr/lib/jvm/java-17-openjdk ./gradlew --version
``` ```
Expected output includes: Expected output includes:
``` ```
Gradle 8.11.1 Gradle 8.14
Kotlin: 2.0.x
``` ```
(Don't worry about the specific Kotlin version in the gradle output — that's gradle's bundled Kotlin, separate from our project Kotlin 2.1.0.) > Going forward in this plan, every `./gradlew ...` invocation must be prefixed with `JAVA_HOME=/usr/lib/jvm/java-17-openjdk` on this dev machine. CI sets `setup-java@v4 java-version: 17` so no prefix is needed there.
- [ ] **Step 7: Commit** - [ ] **Step 7: Commit**