Get the repo ready for F-Droid
CI / check (push) Canceled after 0s

- License: AGPL-3.0-or-later (LICENSE, every package.json, README).
- MUSICSHARE_FOSS=1 builds leave out the only closed-source code, Google's
  ML Kit / Play Services barcode scanner bundled by expo-camera; the scan
  screen then decodes small camera snapshots with jsQR instead.
- Expo modules build from source rather than from precompiled AARs, as
  F-Droid requires (that's also what makes the scanner switch take effect).
  Verified: a FOSS build contains no ML Kit or Play Services classes.
- Release builds default to the production server, and come out unsigned
  without our upload key (F-Droid signs with its own). versionCode 1.
- Store listing in fastlane/metadata/android, a draft fdroiddata recipe in
  fdroid/, and docs/FDROID.md with the submission steps.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MzFywujuH9TiuXbr9vjoX8
This commit is contained in:
2026-10-06 15:26:59 -04:00
co-authored by Claude Opus 5.5
parent 773e6f0e3f
commit a4dad724ad
23 changed files with 522 additions and 14 deletions
+3 -3
View File
@@ -1,7 +1,7 @@
// Signs release builds with the musicshare upload key when it's configured in
// ~/.gradle/gradle.properties (MUSICSHARE_UPLOAD_STORE_FILE, _STORE_PASSWORD,
// _KEY_ALIAS, _KEY_PASSWORD); otherwise falls back to the debug key so builds
// still work on other machines. The key itself never lives in the repo.
// _KEY_ALIAS, _KEY_PASSWORD). Without it the release APK is left unsigned, which
// is what F-Droid expects (it signs with its own key). The key never lives in the repo.
const { withAppBuildGradle } = require('expo/config-plugins');
const MARKER = '// musicshare release signing';
@@ -32,7 +32,7 @@ module.exports = function withReleaseSigning(config) {
if (line === -1) throw new Error('withReleaseSigning: release build type has no signingConfig line');
gradle =
gradle.slice(0, line) +
"signingConfig project.hasProperty('MUSICSHARE_UPLOAD_STORE_FILE') ? signingConfigs.release : signingConfigs.debug" +
"signingConfig project.hasProperty('MUSICSHARE_UPLOAD_STORE_FILE') ? signingConfigs.release : null" +
gradle.slice(line + 'signingConfig signingConfigs.debug'.length);
cfg.modResults.contents = gradle;