fix(fdroid): drop Google Play Core so the scanner accepts the APK; prep v0.1.15
All checks were successful
ci / analyze (push) Successful in 1m5s
ci / test-commons-core (push) Successful in 37s
ci / test-app-seeds (push) Successful in 5m44s
site / deploy (push) Successful in 32s
release / play (push) Successful in 11m49s
release / fdroid_reference_armeabi_v7a (push) Successful in 22m20s
release / fdroid_reference_arm64_v8a (push) Successful in 23m16s
release / fdroid_reference_x86_64 (push) Successful in 22m11s
All checks were successful
ci / analyze (push) Successful in 1m5s
ci / test-commons-core (push) Successful in 37s
ci / test-app-seeds (push) Successful in 5m44s
site / deploy (push) Successful in 32s
release / play (push) Successful in 11m49s
release / fdroid_reference_armeabi_v7a (push) Successful in 22m20s
release / fdroid_reference_arm64_v8a (push) Successful in 23m16s
release / fdroid_reference_x86_64 (push) Successful in 22m11s
F-Droid's APK scanner rejected v0.1.14: 6 com.google.android.play.core.*
(SplitInstall/SplitCompat/tasks) references. They came from Flutter's
io.flutter.embedding.engine.deferredcomponents.PlayStoreDeferredComponentManager
being pinned by our over-broad '-keep class io.flutter.** { *; }' ProGuard
rule — Tane uses no deferred components, so R8 should shrink that manager
away (as it does for immich and other Flutter F-Droid apps, which don't
carry such a keep). Narrow the keep to io.flutter.plugins.**; JNI-critical
embedding classes (FlutterJNI, …) stay via the embedding AAR's own consumer
ProGuard rules — verified the built APK still contains FlutterJNI and no
com.google.android.play.core.* at all. Also exclude the com.google.android.play
group at the dependency level (belt-and-suspenders) + -dontwarn.
Bumps to 0.1.15 (+17); fdroid recipe versionCodes 171/172/173.
This commit is contained in:
parent
facd72db16
commit
f04dd3da1a
4 changed files with 37 additions and 14 deletions
|
|
@ -97,6 +97,17 @@ dependencies {
|
||||||
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")
|
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
|
// 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
|
// 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
|
// tell them apart; `flutter build apk --split-per-abi` alone gives every
|
||||||
|
|
|
||||||
16
apps/app_seeds/android/app/proguard-rules.pro
vendored
16
apps/app_seeds/android/app/proguard-rules.pro
vendored
|
|
@ -6,8 +6,14 @@
|
||||||
# references and would strip/rename them. Keep them explicitly. Start
|
# references and would strip/rename them. Keep them explicitly. Start
|
||||||
# conservative; trim only after a release smoke test proves a class is unused.
|
# conservative; trim only after a release smoke test proves a class is unused.
|
||||||
|
|
||||||
# --- Flutter engine & embedding (defensive; usually handled by the plugin) ---
|
# --- Flutter engine & embedding ---
|
||||||
-keep class io.flutter.** { *; }
|
# 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.** { *; }
|
-keep class io.flutter.plugins.** { *; }
|
||||||
-dontwarn io.flutter.embedding.**
|
-dontwarn io.flutter.embedding.**
|
||||||
|
|
||||||
|
|
@ -38,3 +44,9 @@
|
||||||
# --- Core library desugaring ---
|
# --- Core library desugaring ---
|
||||||
-dontwarn java.lang.invoke.**
|
-dontwarn java.lang.invoke.**
|
||||||
-dontwarn build.IgnoreJava8API
|
-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.**
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
name: tane
|
name: tane
|
||||||
description: "Tane — local-first, encrypted, decentralized traditional-seed inventory and market."
|
description: "Tane — local-first, encrypted, decentralized traditional-seed inventory and market."
|
||||||
publish_to: 'none'
|
publish_to: 'none'
|
||||||
version: 0.1.14+16
|
version: 0.1.15+17
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.11.5
|
sdk: ^3.11.5
|
||||||
|
|
|
||||||
|
|
@ -22,9 +22,9 @@ Repo: https://git.comunes.org/comunes/tane.git
|
||||||
AllowedAPKSigningKeys: ddfae432091b8248a8a4a1b353487fa626301f4357ef835e94ec312f69418e38
|
AllowedAPKSigningKeys: ddfae432091b8248a8a4a1b353487fa626301f4357ef835e94ec312f69418e38
|
||||||
|
|
||||||
Builds:
|
Builds:
|
||||||
- versionName: 0.1.14
|
- versionName: 0.1.15
|
||||||
versionCode: 161
|
versionCode: 171
|
||||||
commit: v0.1.14
|
commit: v0.1.15
|
||||||
subdir: apps/app_seeds
|
subdir: apps/app_seeds
|
||||||
output: build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk
|
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
|
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
|
$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
|
- $$flutter$$/bin/flutter build apk --release --split-per-abi --target-platform=android-arm
|
||||||
|
|
||||||
- versionName: 0.1.14
|
- versionName: 0.1.15
|
||||||
versionCode: 162
|
versionCode: 172
|
||||||
commit: v0.1.14
|
commit: v0.1.15
|
||||||
subdir: apps/app_seeds
|
subdir: apps/app_seeds
|
||||||
output: build/app/outputs/flutter-apk/app-arm64-v8a-release.apk
|
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
|
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
|
$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
|
- $$flutter$$/bin/flutter build apk --release --split-per-abi --target-platform=android-arm64
|
||||||
|
|
||||||
- versionName: 0.1.14
|
- versionName: 0.1.15
|
||||||
versionCode: 163
|
versionCode: 173
|
||||||
commit: v0.1.14
|
commit: v0.1.15
|
||||||
subdir: apps/app_seeds
|
subdir: apps/app_seeds
|
||||||
output: build/app/outputs/flutter-apk/app-x86_64-release.apk
|
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
|
binary: https://git.comunes.org/comunes/tane/releases/download/v%v/app-x86_64-release.apk
|
||||||
|
|
@ -138,5 +138,5 @@ VercodeOperation:
|
||||||
- '%c * 10 + 3'
|
- '%c * 10 + 3'
|
||||||
UpdateCheckData:
|
UpdateCheckData:
|
||||||
apps/app_seeds/pubspec.yaml|version:\s*[\d.]+\+(\d+)|apps/app_seeds/pubspec.yaml|version:\s*([\d.]+)\+
|
apps/app_seeds/pubspec.yaml|version:\s*[\d.]+\+(\d+)|apps/app_seeds/pubspec.yaml|version:\s*([\d.]+)\+
|
||||||
CurrentVersion: 0.1.14
|
CurrentVersion: 0.1.15
|
||||||
CurrentVersionCode: 163
|
CurrentVersionCode: 173
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue