This project ships two distribution flavors from one codebase:
| Flavor | Gradle task | Use |
|---|---|---|
standard (default) |
assembleStandardRelease |
Google Play, GitHub releases |
fdroid |
assembleFdroidRelease |
F-Droid |
The standard flavor keeps Google Play in-app review and in-app updates. The fdroid flavor uses the same app with no-op stubs, does not bundle Play Core libraries, uses the system font, and defaults web suggestions to off.
./gradlew assembleFdroidReleaseAPK output: app/build/outputs/apk/fdroid/release/
./gradlew assembleStandardReleaseF-Droid reads listing text and graphics from:
fastlane/metadata/android/en-US/
Keep the app listing text in this fastlane structure. Do not duplicate summary or full description in fdroiddata metadata; F-Droid pulls that text from this repo.
When releasing, update versionCode / versionName in app/build.gradle.kts, add changelogs/<versionCode>.txt, and tag the release commit. If you keep the current F-Droid-specific tagging scheme, use tags like 3.7-fdroid.
-
Compliance — MIT license, public source, FOSS dependencies in the
fdroidvariant. See the inclusion policy. -
Request for Packaging — Open an issue: https://gitlab.com/fdroid/rfp/-/issues/new
Include app idcom.tk.quicksearch, source URL, license, and confirm you approve inclusion. -
fdroiddata metadata — Fork https://gitlab.com/fdroid/fdroiddata and add
metadata/com.tk.quicksearch.yml. A starter file is in docs/fdroiddata-example.yml. Keep that file focused on build/update metadata and anti-features; summary/description stay infastlane. The important build block:Builds: - versionName: '3.6' versionCode: 65 commit: <full-git-sha-for-that-release> gradle: - fdroid
-
Anti-features (expected) — declare
NonFreeNetfor the optional proprietary network services this app can use (AI providers and user-enabled web suggestions/search integrations). F-Droid maintainers may request additional labels for optional proprietary app/service integrations depending on their review. -
Test — Use fdroidserver or fdroiddata CI:
fdroid lint com.tk.quicksearch,fdroid build com.tk.quicksearch. -
Merge request — Submit to fdroiddata; after merge, the app is built on F-Droid’s infrastructure (typically 24–48 hours to appear). When opening the MR, switch to the App Inclusion template, follow its instructions, and check the required task boxes.
The current repo already covers most of the App Inclusion template:
fastlane/metadata/android/en-US/exists with summary, full description, screenshots, icon, and changelog text.docs/fdroiddata-example.ymlincludesAutoUpdateMode, tag-basedUpdateCheckMode, issue tracker, website, and author contact fields.- The existing tagged F-Droid release is
3.6-fdroid. - Local release verification completed with
./gradlew assembleFdroidReleaseand./gradlew assembleStandardRelease.
Manual items that still happen outside this repo:
- Open the RFP issue and state that you are the upstream author and approve inclusion.
- Reference the RFP issue (and any
fdroiddataissue) in the merge request body. - Wait for
fdroid buildand the GitLab pipelines to pass on thefdroiddatamerge request.
For copy-paste issue and merge-request text, use docs/FDROID_SUBMISSION_TEMPLATE.md.
- Bump
versionCodeandversionNameinapp/build.gradle.kts - Add
fastlane/metadata/android/en-US/changelogs/<versionCode>.txt - Tag the F-Droid release commit (current scheme:
<versionName>-fdroid) -
./gradlew assembleFdroidReleasesucceeds -
./gradlew assembleStandardReleasesucceeds - Update fdroiddata
Buildsentry (or rely on auto-update after first inclusion)
Optional but recommended. F-Droid can verify that their APK matches yours when you publish signed release binaries and enable reproducible build metadata in fdroiddata. See https://f-droid.org/en/docs/Reproducible_Builds/