From 250e0f9eba69dba4a719688afbd0fa767a1cc78f Mon Sep 17 00:00:00 2001 From: Eduard Wisch Date: Tue, 19 May 2026 16:05:23 +0200 Subject: [PATCH] CI-Build: Kotlin aktivieren + Sync-Button mit Fehler-Feedback [apk] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - build.yml: kotlin-android-Plugin (1.9.24) + JVM-Target 17 aktiviert — .kt-Dateien wurden vorher stillschweigend ignoriert (kein Kotlin-Compiler), NetDiagScannerPlugin fehlte im APK -> 'plugin not implemented' fuer alle nativen Scan-Methoden - build.yml: MainActivity.java durch .kt ersetzen (rm + cat), vermeidet Klassenkollision und registriert das Plugin korrekt - sync.svelte.ts: syncManual() -- gibt immer sichtbares Toast-Feedback (Fehler-Details, offline, nicht angemeldet, alles synchronisiert) - AppHeader.svelte: Sync-Button ruft syncManual() statt syncNow() Co-Authored-By: Claude Opus 4.7 (1M context) --- .forgejo/workflows/build.yml | 41 ++++++++++++++++++++--------- src/lib/components/AppHeader.svelte | 2 +- src/lib/sync.svelte.ts | 34 ++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 13 deletions(-) diff --git a/.forgejo/workflows/build.yml b/.forgejo/workflows/build.yml index 8422cd8..8032e62 100644 --- a/.forgejo/workflows/build.yml +++ b/.forgejo/workflows/build.yml @@ -42,11 +42,36 @@ jobs: cp native-plugin/NetDiagScannerPlugin.kt "$PLUGIN_DST/" cp native-plugin/Snmp.kt "$PLUGIN_DST/" - - name: MainActivity — Plugin registrieren + - name: Kotlin im Gradle-Build aktivieren run: | - MAIN=android/app/src/main/java/de/data_it_solution/netdiag/MainActivity.kt - if ! grep -q 'NetDiagScannerPlugin' "$MAIN"; then - cat > "$MAIN" <<'KT' + # Das native Plugin ist Kotlin. Das von `cap add android` erzeugte + # App-Modul hat aber KEIN Kotlin aktiviert. Ohne kotlin-android-Plugin + # werden .kt-Dateien beim Build stillschweigend ignoriert (kein Fehler) + # -> NetDiagScannerPlugin landet nie im APK -> "plugin not implemented". + KOTLIN_VERSION=1.9.24 + # 1. Kotlin-Gradle-Plugin auf Projektebene verfügbar machen + if ! grep -q 'kotlin-gradle-plugin' android/build.gradle; then + sed -i "/com.android.tools.build:gradle/a\\ classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:${KOTLIN_VERSION}\"" android/build.gradle + fi + # 2. Plugin im App-Modul anwenden + JVM-Target auf 17 (Java-Target von Capacitor 6) + APP=android/app/build.gradle + if ! grep -q 'kotlin-android' "$APP"; then + sed -i "/apply plugin: 'com.android.application'/a apply plugin: 'kotlin-android'" "$APP" + sed -i "/^android {/a\\ kotlinOptions { jvmTarget = '17' }" "$APP" + fi + # 3. Coroutines-Abhängigkeit (vom Plugin genutzt) + if ! grep -q 'kotlinx-coroutines-android' "$APP"; then + sed -i '/dependencies {/a \ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0"' "$APP" + fi + + - name: MainActivity durch Kotlin-Variante ersetzen (Plugin registrieren) + run: | + PKG=android/app/src/main/java/de/data_it_solution/netdiag + # `cap add android` erzeugt MainActivity.java — die registriert das + # Plugin NICHT und würde mit unserer .kt-Klasse kollidieren (gleiche + # Klasse, gleiches Package). Also Java-Datei löschen, Kotlin schreiben. + rm -f "$PKG/MainActivity.java" + cat > "$PKG/MainActivity.kt" <<'KT' package de.data_it_solution.netdiag import android.os.Bundle @@ -59,14 +84,6 @@ jobs: } } KT - fi - - - name: Kotlin-Coroutines sicherstellen - run: | - GRADLE=android/app/build.gradle - if ! grep -q 'kotlinx-coroutines-android' "$GRADLE"; then - sed -i '/dependencies {/a \ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0"' "$GRADLE" - fi - name: Capacitor sync run: npx cap sync android diff --git a/src/lib/components/AppHeader.svelte b/src/lib/components/AppHeader.svelte index 3751551..f74081e 100644 --- a/src/lib/components/AppHeader.svelte +++ b/src/lib/components/AppHeader.svelte @@ -33,7 +33,7 @@