feature(fdroid): init fdroid compatibility#240
Draft
RXTX4816 wants to merge 2 commits intogo-vikunja:mainfrom
Draft
feature(fdroid): init fdroid compatibility#240RXTX4816 wants to merge 2 commits intogo-vikunja:mainfrom
RXTX4816 wants to merge 2 commits intogo-vikunja:mainfrom
Conversation
Contributor
Author
|
Marked as draft for now, since the Fdroid description, screenshots and submission must be handled by the product owner. Feel free to create a seperate PR from this. 👍 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#7
Overview
F-Droid Support Implementation - Complete Summary
Overview
This document details all changes made to support F-Droid distribution while maintaining Google Play Store compatibility.
Architecture
The app uses three Android build flavors with the same codebase:
All flavors run identical Dart code. Sentry crash reporting is controlled solely through runtime user settings (disabled by default), ensuring F-Droid builds have no telemetry enabled by default.
Changes Made
1. Android Build Configuration (android/app/build.gradle)
Added F-Droid Build Flavor:
All Flavors:
unsigned- Debug flavor with debug signing and no app ID suffixproduction- Release flavor with release keystore signingfdroid- Release flavor with release keystore signing (identical to production)APK Naming:
app-fdroid-release.apk2. Sentry Privacy Approach (lib/main.dart)
Unchanged from original:
Why this works for F-Droid:
3. Continuous Integration (.github/workflows/release.yml)
Build Steps:
Artifact Handling:
vikunja-{VERSION}-fdroid.apkproductionflavorResult:
4. Build System Documentation (android/fastlane/Fastfile)
Added Comments:
Clarifies separation of F-Droid builds (CI/CD automated) vs Play Store deployment (Fastlane manual).
5. Makefile Updates (Makefile)
Fixed Build Target:
Changed from non-existent
--flavor mainto--flavor production.6. App Metadata for F-Droid (android/fastlane/metadata/)
Complete F-Droid descriptions available in:
Metadata ready for F-Droid builders to ingest during their automated build process.
7. Documentation
FDROID_SUBMISSION.md
README.md
Build Commands Reference
For Development:
For CI/CD:
productionvariant → Google Play Beta/Productionfdroidvariant → S3 artifacts for F-Droid submissionPrivacy & Sentry
Implementation
falseUser Control
Simplicity Benefits
Verification Checklist
✅ Gradle Builds
unsignedflavor builds successfullyproductionflavor builds successfullyfdroidflavor builds successfully✅ Flutter Analysis
✅ CI/CD Workflow
✅ Metadata
✅ Documentation
Next Steps
Add App Screenshots (Optional but recommended):
android/fastlane/metadata/android/en-US/images/phoneScreenshots/Add Feature Graphics (Optional):
android/fastlane/metadata/android/en-US/images/Prepare F-Droid Submission:
Build and Test Locally (Optional):
Release: Tag a version on GitHub
Implementation Notes
Status: ✅ Complete and ready for F-Droid submission!
F-Droid Submission Information
This document provides information for F-Droid maintainers and contributors regarding the Vikunja app submission.
App Overview
Name: Vikunja
Description: Open-source, self-hosted to-do app with task management and collaboration features
License: GPL-3.0+
Repository: https://github.com/go-vikunja/app
Website: https://vikunja.io
Build Information
Build Environment
Build Command
Or using Gradle directly:
Build Flavors
The app uses the following build flavor for F-Droid:
F-Droid Specific Configuration
Dependencies
All Dependencies are Open Source
The app uses only open-source libraries. Key dependencies:
A complete list is available in pubspec.yaml and android/app/build.gradle.
Privacy & Telemetry
Sentry Error Reporting
Network Permissions
The app requires
INTERNETpermission only for connecting to self-hosted Vikunja servers. No data is sent to third parties.Metadata
App metadata including descriptions, screenshots, and changelogs are available in:
F-Droid's build system can automatically ingest this metadata during the build process.
Source Code Requirements
All source code is available in the main repository. The app does not include binary dependencies or obfuscated code.
Reproducible Builds
The app follows Flutter and Android best practices for reproducible builds. Build outputs should be reproducible when built with the same Flutter SDK version.
Contributing Device Support
If you want to add support for additional devices or locales, pull requests are welcome at:
https://github.com/go-vikunja/app
Contact
For F-Droid specific questions:
Version Information
The app follows semantic versioning (MAJOR.MINOR.PATCH). GitHub releases are tagged with version numbers prefixed with 'v' (e.g., v1.0.0).
CI/CD automatically builds both Google Play and F-Droid APK variants on each release, with F-Droid variants available as artifacts or on the GitHub releases page.