diff --git a/apps/app_seeds/android/app/build.gradle.kts b/apps/app_seeds/android/app/build.gradle.kts index ecc470d..fd8100f 100644 --- a/apps/app_seeds/android/app/build.gradle.kts +++ b/apps/app_seeds/android/app/build.gradle.kts @@ -97,6 +97,17 @@ dependencies { coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4") } +// F-Droid: Flutter's embedding transitively pulls Google Play Core (deferred +// components / split install — com.google.android.play.core.*), which F-Droid's +// scanner rejects as a proprietary Google dependency. Tane does not use deferred +// components, so drop the whole com.google.android.play group; those split-install +// code paths are never reached. R8 keeps the referenced classes otherwise, so the +// exclusion (not shrinking) is what removes them; -dontwarn in proguard-rules.pro +// silences the now-dangling compile-time references. +configurations.all { + exclude(group = "com.google.android.play") +} + // F-Droid builds one split APK per ABI (smaller downloads than a universal // APK) and needs each split to carry a distinct versionCode so its repo can // tell them apart; `flutter build apk --split-per-abi` alone gives every diff --git a/apps/app_seeds/android/app/proguard-rules.pro b/apps/app_seeds/android/app/proguard-rules.pro index 3d061e3..ad9ccdd 100644 --- a/apps/app_seeds/android/app/proguard-rules.pro +++ b/apps/app_seeds/android/app/proguard-rules.pro @@ -6,8 +6,14 @@ # references and would strip/rename them. Keep them explicitly. Start # conservative; trim only after a release smoke test proves a class is unused. -# --- Flutter engine & embedding (defensive; usually handled by the plugin) --- --keep class io.flutter.** { *; } +# --- Flutter engine & embedding --- +# Do NOT blanket-keep io.flutter.** : that pins io.flutter.embedding.engine. +# deferredcomponents.PlayStoreDeferredComponentManager, which references the +# proprietary com.google.android.play.core.* (SplitInstall/SplitCompat) API and +# makes F-Droid's scanner reject the APK. Tane doesn't use deferred components, +# so let R8 shrink that unused manager away (removing the Play Core references). +# JNI-critical embedding classes (FlutterJNI, etc.) are kept by the Flutter +# embedding AAR's own bundled consumer ProGuard rules, so this stays safe. -keep class io.flutter.plugins.** { *; } -dontwarn io.flutter.embedding.** @@ -38,3 +44,9 @@ # --- Core library desugaring --- -dontwarn java.lang.invoke.** -dontwarn build.IgnoreJava8API + +# --- F-Droid: Google Play Core excluded (see build.gradle.kts) --- +# The Flutter embedding references Play Core split-install classes for deferred +# components, which Tane doesn't use; the com.google.android.play group is +# excluded from the build, so tell R8 not to warn about the absent references. +-dontwarn com.google.android.play.** diff --git a/apps/app_seeds/pubspec.yaml b/apps/app_seeds/pubspec.yaml index 8ece8a3..dafb81d 100644 --- a/apps/app_seeds/pubspec.yaml +++ b/apps/app_seeds/pubspec.yaml @@ -1,7 +1,7 @@ name: tane description: "Tane — local-first, encrypted, decentralized traditional-seed inventory and market." publish_to: 'none' -version: 0.1.14+16 +version: 0.1.15+17 environment: sdk: ^3.11.5 diff --git a/docs/fdroid/org.comunes.tane.yml b/docs/fdroid/org.comunes.tane.yml index 7b5f85a..c3891e8 100644 --- a/docs/fdroid/org.comunes.tane.yml +++ b/docs/fdroid/org.comunes.tane.yml @@ -22,9 +22,9 @@ Repo: https://git.comunes.org/comunes/tane.git AllowedAPKSigningKeys: ddfae432091b8248a8a4a1b353487fa626301f4357ef835e94ec312f69418e38 Builds: - - versionName: 0.1.14 - versionCode: 161 - commit: v0.1.14 + - versionName: 0.1.15 + versionCode: 171 + commit: v0.1.15 subdir: apps/app_seeds output: build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk binary: https://git.comunes.org/comunes/tane/releases/download/v%v/app-armeabi-v7a-release.apk @@ -58,9 +58,9 @@ Builds: $PUB_CACHE/hosted/pub.dev/flutter_tesseract_ocr-0.4.31/android/libs/tesseract4android-release.aar - $$flutter$$/bin/flutter build apk --release --split-per-abi --target-platform=android-arm - - versionName: 0.1.14 - versionCode: 162 - commit: v0.1.14 + - versionName: 0.1.15 + versionCode: 172 + commit: v0.1.15 subdir: apps/app_seeds output: build/app/outputs/flutter-apk/app-arm64-v8a-release.apk binary: https://git.comunes.org/comunes/tane/releases/download/v%v/app-arm64-v8a-release.apk @@ -94,9 +94,9 @@ Builds: $PUB_CACHE/hosted/pub.dev/flutter_tesseract_ocr-0.4.31/android/libs/tesseract4android-release.aar - $$flutter$$/bin/flutter build apk --release --split-per-abi --target-platform=android-arm64 - - versionName: 0.1.14 - versionCode: 163 - commit: v0.1.14 + - versionName: 0.1.15 + versionCode: 173 + commit: v0.1.15 subdir: apps/app_seeds output: build/app/outputs/flutter-apk/app-x86_64-release.apk binary: https://git.comunes.org/comunes/tane/releases/download/v%v/app-x86_64-release.apk @@ -138,5 +138,5 @@ VercodeOperation: - '%c * 10 + 3' UpdateCheckData: apps/app_seeds/pubspec.yaml|version:\s*[\d.]+\+(\d+)|apps/app_seeds/pubspec.yaml|version:\s*([\d.]+)\+ -CurrentVersion: 0.1.14 -CurrentVersionCode: 163 +CurrentVersion: 0.1.15 +CurrentVersionCode: 173