From 29d73791e36e4e897cd6ec59d248113ab7748cd8 Mon Sep 17 00:00:00 2001 From: zefutoff Date: Mon, 12 Oct 2026 22:48:26 +0200 Subject: [PATCH] refactor: finalize Android package namespace --- CHANGELOG.md | 1 + Makefile | 1 + app/build.gradle.kts | 4 +-- .../AccessibilityInstrumentedTest.kt | 2 +- .../CorrectionStatusManifestTest.kt | 2 +- .../GrammalecteEngineInstrumentedTest.kt | 2 +- .../ImeInputConnectionEndToEndTest.kt | 2 +- .../grammalecte}/ImeManifestTest.kt | 2 +- .../grammalecte}/ProcessTextManifestTest.kt | 2 +- .../grammalecte}/RuleSettingsManifestTest.kt | 2 +- .../SetupGuideInstrumentedTest.kt | 2 +- .../grammalecte}/SetupGuideManifestTest.kt | 2 +- .../grammalecte}/SpellCheckerManifestTest.kt | 2 +- .../SpellCheckerServiceEndToEndTest.kt | 2 +- .../VisualIdentityManifestTest.kt | 2 +- .../ImeIntegrationTestActivity.kt | 2 +- .../WebViewCompatibilityTestActivity.kt | 2 +- .../grammalecte}/AccessibilityUi.kt | 2 +- .../grammalecte}/CorrectionStatus.kt | 2 +- .../grammalecte}/CorrectionStatusActivity.kt | 2 +- .../grammalecte}/GrammalecteImeService.kt | 2 +- .../grammalecte}/GrammalecteTileService.kt | 2 +- .../grammalecte}/ImePickerActivity.kt | 2 +- .../grammalecte}/MainActivity.kt | 2 +- .../PersonalDictionaryActivity.kt | 2 +- .../grammalecte}/ProcessTextActivity.kt | 2 +- .../grammalecte}/RuleSettingsActivity.kt | 2 +- .../grammalecte}/SetupGuideActivity.kt | 2 +- .../grammalecte}/SetupGuidePreferences.kt | 2 +- docs/fdroid.md | 29 +++++++++------- tools/check-android-package-id.sh | 34 +++++++++++++++++++ tools/run-android.sh | 2 +- 32 files changed, 81 insertions(+), 42 deletions(-) rename app/src/androidTest/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/AccessibilityInstrumentedTest.kt (99%) rename app/src/androidTest/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/CorrectionStatusManifestTest.kt (95%) rename app/src/androidTest/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/GrammalecteEngineInstrumentedTest.kt (99%) rename app/src/androidTest/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/ImeInputConnectionEndToEndTest.kt (99%) rename app/src/androidTest/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/ImeManifestTest.kt (98%) rename app/src/androidTest/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/ProcessTextManifestTest.kt (97%) rename app/src/androidTest/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/RuleSettingsManifestTest.kt (97%) rename app/src/androidTest/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/SetupGuideInstrumentedTest.kt (99%) rename app/src/androidTest/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/SetupGuideManifestTest.kt (95%) rename app/src/androidTest/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/SpellCheckerManifestTest.kt (96%) rename app/src/androidTest/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/SpellCheckerServiceEndToEndTest.kt (99%) rename app/src/androidTest/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/VisualIdentityManifestTest.kt (97%) rename app/src/debug/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/ImeIntegrationTestActivity.kt (93%) rename app/src/debug/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/WebViewCompatibilityTestActivity.kt (97%) rename app/src/main/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/AccessibilityUi.kt (90%) rename app/src/main/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/CorrectionStatus.kt (98%) rename app/src/main/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/CorrectionStatusActivity.kt (99%) rename app/src/main/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/GrammalecteImeService.kt (99%) rename app/src/main/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/GrammalecteTileService.kt (97%) rename app/src/main/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/ImePickerActivity.kt (89%) rename app/src/main/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/MainActivity.kt (99%) rename app/src/main/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/PersonalDictionaryActivity.kt (99%) rename app/src/main/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/ProcessTextActivity.kt (99%) rename app/src/main/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/RuleSettingsActivity.kt (99%) rename app/src/main/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/SetupGuideActivity.kt (99%) rename app/src/main/kotlin/fr/{grammalecteandroid/unofficial => zefut/grammalecte}/SetupGuidePreferences.kt (94%) create mode 100755 tools/check-android-package-id.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bbfd28..0c7a175 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -60,6 +60,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ### Changed +- Finalized the Android namespace and application ID as `fr.zefut.grammalecte` before public distribution; development installs using `fr.grammalecteandroid.unofficial` are treated as a separate Android application. - Reviewed and normalized user-facing French wording, typography and pluralization across the application, correction IME, setup screens and diagnostics. - Improved Android UI accessibility with semantic headings, TalkBack live-region announcements, minimum IME touch targets and a large-text IME layout that avoids truncated actions. - Grammalecte engine initialization now loads conjugation, phonetic and morphology data required by the full grammar engine. diff --git a/Makefile b/Makefile index 8f96859..1363e60 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,7 @@ vendor: ./tools/vendor-grammalecte.sh check: + ./tools/check-android-package-id.sh ./tools/check-no-network-permission.sh shellcheck tools/*.sh ./tools/run-actionlint.sh diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e8684b8..1fd8f07 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } android { - namespace = "fr.grammalecteandroid.unofficial" + namespace = "fr.zefut.grammalecte" compileSdk = 36 androidResources { @@ -25,7 +25,7 @@ android { } defaultConfig { - applicationId = "fr.grammalecteandroid.unofficial" + applicationId = "fr.zefut.grammalecte" minSdk = 26 targetSdk = 36 versionCode = 1 diff --git a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/AccessibilityInstrumentedTest.kt b/app/src/androidTest/kotlin/fr/zefut/grammalecte/AccessibilityInstrumentedTest.kt similarity index 99% rename from app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/AccessibilityInstrumentedTest.kt rename to app/src/androidTest/kotlin/fr/zefut/grammalecte/AccessibilityInstrumentedTest.kt index 4e02177..86ce75d 100644 --- a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/AccessibilityInstrumentedTest.kt +++ b/app/src/androidTest/kotlin/fr/zefut/grammalecte/AccessibilityInstrumentedTest.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.app.Activity import android.content.Context diff --git a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/CorrectionStatusManifestTest.kt b/app/src/androidTest/kotlin/fr/zefut/grammalecte/CorrectionStatusManifestTest.kt similarity index 95% rename from app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/CorrectionStatusManifestTest.kt rename to app/src/androidTest/kotlin/fr/zefut/grammalecte/CorrectionStatusManifestTest.kt index 7125dd2..8e0d15b 100644 --- a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/CorrectionStatusManifestTest.kt +++ b/app/src/androidTest/kotlin/fr/zefut/grammalecte/CorrectionStatusManifestTest.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.content.ComponentName import android.content.Context diff --git a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/GrammalecteEngineInstrumentedTest.kt b/app/src/androidTest/kotlin/fr/zefut/grammalecte/GrammalecteEngineInstrumentedTest.kt similarity index 99% rename from app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/GrammalecteEngineInstrumentedTest.kt rename to app/src/androidTest/kotlin/fr/zefut/grammalecte/GrammalecteEngineInstrumentedTest.kt index 0659445..8444d59 100644 --- a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/GrammalecteEngineInstrumentedTest.kt +++ b/app/src/androidTest/kotlin/fr/zefut/grammalecte/GrammalecteEngineInstrumentedTest.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.content.Context import androidx.test.core.app.ApplicationProvider diff --git a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/ImeInputConnectionEndToEndTest.kt b/app/src/androidTest/kotlin/fr/zefut/grammalecte/ImeInputConnectionEndToEndTest.kt similarity index 99% rename from app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/ImeInputConnectionEndToEndTest.kt rename to app/src/androidTest/kotlin/fr/zefut/grammalecte/ImeInputConnectionEndToEndTest.kt index cf2589a..c0acb26 100644 --- a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/ImeInputConnectionEndToEndTest.kt +++ b/app/src/androidTest/kotlin/fr/zefut/grammalecte/ImeInputConnectionEndToEndTest.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.accessibilityservice.AccessibilityServiceInfo import android.content.ComponentName diff --git a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/ImeManifestTest.kt b/app/src/androidTest/kotlin/fr/zefut/grammalecte/ImeManifestTest.kt similarity index 98% rename from app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/ImeManifestTest.kt rename to app/src/androidTest/kotlin/fr/zefut/grammalecte/ImeManifestTest.kt index 6089009..5d03c01 100644 --- a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/ImeManifestTest.kt +++ b/app/src/androidTest/kotlin/fr/zefut/grammalecte/ImeManifestTest.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.Manifest import android.content.Context diff --git a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/ProcessTextManifestTest.kt b/app/src/androidTest/kotlin/fr/zefut/grammalecte/ProcessTextManifestTest.kt similarity index 97% rename from app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/ProcessTextManifestTest.kt rename to app/src/androidTest/kotlin/fr/zefut/grammalecte/ProcessTextManifestTest.kt index ac1fd73..c880c6d 100644 --- a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/ProcessTextManifestTest.kt +++ b/app/src/androidTest/kotlin/fr/zefut/grammalecte/ProcessTextManifestTest.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.content.Context import android.content.Intent diff --git a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/RuleSettingsManifestTest.kt b/app/src/androidTest/kotlin/fr/zefut/grammalecte/RuleSettingsManifestTest.kt similarity index 97% rename from app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/RuleSettingsManifestTest.kt rename to app/src/androidTest/kotlin/fr/zefut/grammalecte/RuleSettingsManifestTest.kt index 0ca645e..ece4833 100644 --- a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/RuleSettingsManifestTest.kt +++ b/app/src/androidTest/kotlin/fr/zefut/grammalecte/RuleSettingsManifestTest.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.content.ComponentName import android.content.Context diff --git a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/SetupGuideInstrumentedTest.kt b/app/src/androidTest/kotlin/fr/zefut/grammalecte/SetupGuideInstrumentedTest.kt similarity index 99% rename from app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/SetupGuideInstrumentedTest.kt rename to app/src/androidTest/kotlin/fr/zefut/grammalecte/SetupGuideInstrumentedTest.kt index f8b6d86..d143acf 100644 --- a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/SetupGuideInstrumentedTest.kt +++ b/app/src/androidTest/kotlin/fr/zefut/grammalecte/SetupGuideInstrumentedTest.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.app.Activity import android.content.Context diff --git a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/SetupGuideManifestTest.kt b/app/src/androidTest/kotlin/fr/zefut/grammalecte/SetupGuideManifestTest.kt similarity index 95% rename from app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/SetupGuideManifestTest.kt rename to app/src/androidTest/kotlin/fr/zefut/grammalecte/SetupGuideManifestTest.kt index 022d928..efdc926 100644 --- a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/SetupGuideManifestTest.kt +++ b/app/src/androidTest/kotlin/fr/zefut/grammalecte/SetupGuideManifestTest.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.content.ComponentName import android.content.Context diff --git a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/SpellCheckerManifestTest.kt b/app/src/androidTest/kotlin/fr/zefut/grammalecte/SpellCheckerManifestTest.kt similarity index 96% rename from app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/SpellCheckerManifestTest.kt rename to app/src/androidTest/kotlin/fr/zefut/grammalecte/SpellCheckerManifestTest.kt index 6dac37d..984ab5d 100644 --- a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/SpellCheckerManifestTest.kt +++ b/app/src/androidTest/kotlin/fr/zefut/grammalecte/SpellCheckerManifestTest.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.content.Intent import android.content.pm.PackageManager diff --git a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/SpellCheckerServiceEndToEndTest.kt b/app/src/androidTest/kotlin/fr/zefut/grammalecte/SpellCheckerServiceEndToEndTest.kt similarity index 99% rename from app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/SpellCheckerServiceEndToEndTest.kt rename to app/src/androidTest/kotlin/fr/zefut/grammalecte/SpellCheckerServiceEndToEndTest.kt index 4237289..a8e4683 100644 --- a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/SpellCheckerServiceEndToEndTest.kt +++ b/app/src/androidTest/kotlin/fr/zefut/grammalecte/SpellCheckerServiceEndToEndTest.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.content.ComponentName import android.content.Context diff --git a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/VisualIdentityManifestTest.kt b/app/src/androidTest/kotlin/fr/zefut/grammalecte/VisualIdentityManifestTest.kt similarity index 97% rename from app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/VisualIdentityManifestTest.kt rename to app/src/androidTest/kotlin/fr/zefut/grammalecte/VisualIdentityManifestTest.kt index f1e16ed..a31aa3e 100644 --- a/app/src/androidTest/kotlin/fr/grammalecteandroid/unofficial/VisualIdentityManifestTest.kt +++ b/app/src/androidTest/kotlin/fr/zefut/grammalecte/VisualIdentityManifestTest.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.content.ComponentName import android.content.Context diff --git a/app/src/debug/kotlin/fr/grammalecteandroid/unofficial/ImeIntegrationTestActivity.kt b/app/src/debug/kotlin/fr/zefut/grammalecte/ImeIntegrationTestActivity.kt similarity index 93% rename from app/src/debug/kotlin/fr/grammalecteandroid/unofficial/ImeIntegrationTestActivity.kt rename to app/src/debug/kotlin/fr/zefut/grammalecte/ImeIntegrationTestActivity.kt index 1e7bf2e..578152e 100644 --- a/app/src/debug/kotlin/fr/grammalecteandroid/unofficial/ImeIntegrationTestActivity.kt +++ b/app/src/debug/kotlin/fr/zefut/grammalecte/ImeIntegrationTestActivity.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.app.Activity import android.os.Bundle diff --git a/app/src/debug/kotlin/fr/grammalecteandroid/unofficial/WebViewCompatibilityTestActivity.kt b/app/src/debug/kotlin/fr/zefut/grammalecte/WebViewCompatibilityTestActivity.kt similarity index 97% rename from app/src/debug/kotlin/fr/grammalecteandroid/unofficial/WebViewCompatibilityTestActivity.kt rename to app/src/debug/kotlin/fr/zefut/grammalecte/WebViewCompatibilityTestActivity.kt index e211990..b0ecd6e 100644 --- a/app/src/debug/kotlin/fr/grammalecteandroid/unofficial/WebViewCompatibilityTestActivity.kt +++ b/app/src/debug/kotlin/fr/zefut/grammalecte/WebViewCompatibilityTestActivity.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.app.Activity import android.os.Bundle diff --git a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/AccessibilityUi.kt b/app/src/main/kotlin/fr/zefut/grammalecte/AccessibilityUi.kt similarity index 90% rename from app/src/main/kotlin/fr/grammalecteandroid/unofficial/AccessibilityUi.kt rename to app/src/main/kotlin/fr/zefut/grammalecte/AccessibilityUi.kt index 713f117..0e1d970 100644 --- a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/AccessibilityUi.kt +++ b/app/src/main/kotlin/fr/zefut/grammalecte/AccessibilityUi.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.os.Build import android.view.View diff --git a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/CorrectionStatus.kt b/app/src/main/kotlin/fr/zefut/grammalecte/CorrectionStatus.kt similarity index 98% rename from app/src/main/kotlin/fr/grammalecteandroid/unofficial/CorrectionStatus.kt rename to app/src/main/kotlin/fr/zefut/grammalecte/CorrectionStatus.kt index 28da18e..7ac5429 100644 --- a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/CorrectionStatus.kt +++ b/app/src/main/kotlin/fr/zefut/grammalecte/CorrectionStatus.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.content.ComponentName import android.content.Context diff --git a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/CorrectionStatusActivity.kt b/app/src/main/kotlin/fr/zefut/grammalecte/CorrectionStatusActivity.kt similarity index 99% rename from app/src/main/kotlin/fr/grammalecteandroid/unofficial/CorrectionStatusActivity.kt rename to app/src/main/kotlin/fr/zefut/grammalecte/CorrectionStatusActivity.kt index af6a705..d5ce9e0 100644 --- a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/CorrectionStatusActivity.kt +++ b/app/src/main/kotlin/fr/zefut/grammalecte/CorrectionStatusActivity.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.app.Activity import android.content.ComponentName diff --git a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/GrammalecteImeService.kt b/app/src/main/kotlin/fr/zefut/grammalecte/GrammalecteImeService.kt similarity index 99% rename from app/src/main/kotlin/fr/grammalecteandroid/unofficial/GrammalecteImeService.kt rename to app/src/main/kotlin/fr/zefut/grammalecte/GrammalecteImeService.kt index 2fa0741..6b4d2d1 100644 --- a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/GrammalecteImeService.kt +++ b/app/src/main/kotlin/fr/zefut/grammalecte/GrammalecteImeService.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.graphics.drawable.GradientDrawable import android.inputmethodservice.InputMethodService diff --git a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/GrammalecteTileService.kt b/app/src/main/kotlin/fr/zefut/grammalecte/GrammalecteTileService.kt similarity index 97% rename from app/src/main/kotlin/fr/grammalecteandroid/unofficial/GrammalecteTileService.kt rename to app/src/main/kotlin/fr/zefut/grammalecte/GrammalecteTileService.kt index 1e119be..76a497b 100644 --- a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/GrammalecteTileService.kt +++ b/app/src/main/kotlin/fr/zefut/grammalecte/GrammalecteTileService.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.annotation.SuppressLint import android.app.PendingIntent diff --git a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/ImePickerActivity.kt b/app/src/main/kotlin/fr/zefut/grammalecte/ImePickerActivity.kt similarity index 89% rename from app/src/main/kotlin/fr/grammalecteandroid/unofficial/ImePickerActivity.kt rename to app/src/main/kotlin/fr/zefut/grammalecte/ImePickerActivity.kt index 630931f..5a67cf9 100644 --- a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/ImePickerActivity.kt +++ b/app/src/main/kotlin/fr/zefut/grammalecte/ImePickerActivity.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.app.Activity import android.os.Bundle diff --git a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/MainActivity.kt b/app/src/main/kotlin/fr/zefut/grammalecte/MainActivity.kt similarity index 99% rename from app/src/main/kotlin/fr/grammalecteandroid/unofficial/MainActivity.kt rename to app/src/main/kotlin/fr/zefut/grammalecte/MainActivity.kt index 4fb70a6..58e77a8 100644 --- a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/MainActivity.kt +++ b/app/src/main/kotlin/fr/zefut/grammalecte/MainActivity.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.app.Activity import android.app.StatusBarManager diff --git a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/PersonalDictionaryActivity.kt b/app/src/main/kotlin/fr/zefut/grammalecte/PersonalDictionaryActivity.kt similarity index 99% rename from app/src/main/kotlin/fr/grammalecteandroid/unofficial/PersonalDictionaryActivity.kt rename to app/src/main/kotlin/fr/zefut/grammalecte/PersonalDictionaryActivity.kt index ecbcaf2..7de6518 100644 --- a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/PersonalDictionaryActivity.kt +++ b/app/src/main/kotlin/fr/zefut/grammalecte/PersonalDictionaryActivity.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.app.Activity import android.graphics.Typeface diff --git a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/ProcessTextActivity.kt b/app/src/main/kotlin/fr/zefut/grammalecte/ProcessTextActivity.kt similarity index 99% rename from app/src/main/kotlin/fr/grammalecteandroid/unofficial/ProcessTextActivity.kt rename to app/src/main/kotlin/fr/zefut/grammalecte/ProcessTextActivity.kt index 1dccaa1..132393d 100644 --- a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/ProcessTextActivity.kt +++ b/app/src/main/kotlin/fr/zefut/grammalecte/ProcessTextActivity.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.app.Activity import android.content.ClipData diff --git a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/RuleSettingsActivity.kt b/app/src/main/kotlin/fr/zefut/grammalecte/RuleSettingsActivity.kt similarity index 99% rename from app/src/main/kotlin/fr/grammalecteandroid/unofficial/RuleSettingsActivity.kt rename to app/src/main/kotlin/fr/zefut/grammalecte/RuleSettingsActivity.kt index 78a80f1..998e310 100644 --- a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/RuleSettingsActivity.kt +++ b/app/src/main/kotlin/fr/zefut/grammalecte/RuleSettingsActivity.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.app.Activity import android.app.AlertDialog diff --git a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/SetupGuideActivity.kt b/app/src/main/kotlin/fr/zefut/grammalecte/SetupGuideActivity.kt similarity index 99% rename from app/src/main/kotlin/fr/grammalecteandroid/unofficial/SetupGuideActivity.kt rename to app/src/main/kotlin/fr/zefut/grammalecte/SetupGuideActivity.kt index 41f5b20..33729cb 100644 --- a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/SetupGuideActivity.kt +++ b/app/src/main/kotlin/fr/zefut/grammalecte/SetupGuideActivity.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.app.Activity import android.content.ComponentName diff --git a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/SetupGuidePreferences.kt b/app/src/main/kotlin/fr/zefut/grammalecte/SetupGuidePreferences.kt similarity index 94% rename from app/src/main/kotlin/fr/grammalecteandroid/unofficial/SetupGuidePreferences.kt rename to app/src/main/kotlin/fr/zefut/grammalecte/SetupGuidePreferences.kt index ea5d567..b07da72 100644 --- a/app/src/main/kotlin/fr/grammalecteandroid/unofficial/SetupGuidePreferences.kt +++ b/app/src/main/kotlin/fr/zefut/grammalecte/SetupGuidePreferences.kt @@ -1,4 +1,4 @@ -package fr.grammalecteandroid.unofficial +package fr.zefut.grammalecte import android.content.Context diff --git a/docs/fdroid.md b/docs/fdroid.md index 94acc68..89c38a0 100644 --- a/docs/fdroid.md +++ b/docs/fdroid.md @@ -68,18 +68,22 @@ metadata and the source repository. ## F-Droid build recipe -The final F-Droid build recipe is intentionally deferred until the Android -application ID has been reviewed and finalized. +The Android namespace and application ID are finalized as: -The current development application ID is: + fr.zefut.grammalecte + +This identifier is considered stable and must not change after the first +public release. + +The previous development identifier: fr.grammalecteandroid.unofficial -Changing an Android application ID after public distribution would create a -different application from Android's point of view, so this decision must be -made before the first stable release. +was used only by pre-release development builds. Android treats the new +application ID as a different application, so development installations using +the previous identifier do not upgrade in place. -Once the namespace is final, the F-Droid recipe can define: +The final F-Droid recipe can now define: - the final application ID; - the public Git repository; @@ -96,9 +100,8 @@ verifies it against the independently rebuilt APK. Before an F-Droid submission: -1. finalize the Android package namespace; -2. finalize the first stable version name and version code; -3. publish a versioned upstream APK; -4. add release screenshots and changelog metadata; -5. prepare and validate the final F-Droid build recipe; -6. complete the third-party license review. +1. finalize the first stable version name and version code; +2. publish a versioned upstream APK; +3. add release screenshots and changelog metadata; +4. prepare and validate the final F-Droid build recipe; +5. complete the third-party license review. diff --git a/tools/check-android-package-id.sh b/tools/check-android-package-id.sh new file mode 100755 index 0000000..4be9cf1 --- /dev/null +++ b/tools/check-android-package-id.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +BUILD_FILE="$ROOT/app/build.gradle.kts" +EXPECTED="fr.zefut.grammalecte" + +NAMESPACE="$( + sed -nE \ + 's/^[[:space:]]*namespace = "([^"]+)".*/\1/p' \ + "$BUILD_FILE" | + head -n 1 +)" + +APPLICATION_ID="$( + sed -nE \ + 's/^[[:space:]]*applicationId = "([^"]+)".*/\1/p' \ + "$BUILD_FILE" | + head -n 1 +)" + +if [[ "$NAMESPACE" != "$EXPECTED" ]]; then + echo "Unexpected Android namespace: ${NAMESPACE:-missing}" >&2 + echo "Expected: $EXPECTED" >&2 + exit 1 +fi + +if [[ "$APPLICATION_ID" != "$EXPECTED" ]]; then + echo "Unexpected Android applicationId: ${APPLICATION_ID:-missing}" >&2 + echo "Expected: $EXPECTED" >&2 + exit 1 +fi + +echo "Android package identity OK: $EXPECTED" diff --git a/tools/run-android.sh b/tools/run-android.sh index 2e161eb..2cd372b 100755 --- a/tools/run-android.sh +++ b/tools/run-android.sh @@ -5,7 +5,7 @@ ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" cd "$ROOT" APK="app/build/outputs/apk/debug/app-debug.apk" -PACKAGE="fr.grammalecteandroid.unofficial" +PACKAGE="fr.zefut.grammalecte" ACTIVITY=".MainActivity" # Android SDK