element-x-ada/docs/build-logs/fdroid-swap-result.md

2.3 KiB

F-Droid Flavor Swap Audit & Execution

Date: 2026-03-28
Status: SUCCESS - Clean swap, no code changes needed

Flavor Differences

The Element X Android build flavors are minimal:

Aspect Gplay F-Droid
SHORT_FLAVOR_DESCRIPTION "G" "F"
FLAVOR_DESCRIPTION "GooglePlay" "FDroid"
Push Provider Firebase (FCM) UnifiedPush only
Flavor-specific source dirs None None

Key finding: No app/src/gplay or app/src/fdroid directories exist — flavors only differ by build config strings and conditional dependencies.

Push Provider Architecture

if (ModulesConfig.pushProvidersConfig.includeFirebase) {
    "gplayImplementation"(projects.libraries.pushproviders.firebase)  // Gplay only
}
if (ModulesConfig.pushProvidersConfig.includeUnifiedPush) {
    implementation(projects.libraries.pushproviders.unifiedpush)  // Both flavors
}

Firebase push is gplay-only via gplayImplementation. UnifiedPush is included in both.

Google Dependencies Check

  • google-services.json: Not present in repo
  • Google Services plugin: Commented out in build.gradle.kts
  • Firebase App Distribution: Used for CI only, not runtime dependency

Custom Code (ADA) Check

Searched features/wallet/ and libraries/matrix/ for:

  • gplay, GPlay, firebase, Firebase, FCM, fcm, google-services

Result: No matches. Our wallet code has zero Google/Gplay dependencies.

Build Result

BUILD SUCCESSFUL in 1m 42s
3808 actionable tasks: 23 executed, 1 from cache, 3784 up-to-date

APK Outputs

Variant Size
arm64-v8a 206M
armeabi-v7a 93M
universal 382M
x86 100M
x86_64 210M

Location: /tmp/element-x-android/app/build/outputs/apk/fdroid/debug/

APK Download

Serving arm64 APK on Lucy:

http://192.168.0.5:8888

Changes Required

None. The swap from :app:assembleGplayDebug to :app:assembleFdroidDebug is purely a build target change. No source code modifications needed.

Recommendation

For ADA, F-Droid is the cleaner choice:

  • No Firebase/Google Play Services dependencies
  • Simpler push architecture (UnifiedPush only)
  • No google-services.json required
  • Better for privacy-focused crypto wallet users