perf(android): R8, bitmap downscaling, edge-to-edge; recover device compat; publish to production
Device compatibility (regression fix): - The CAMERA permission (from zxing_barcode_scanner / image_picker) implicitly required android.hardware.camera, excluding camera-less devices — Play showed Automotive -96%, Chromebook -86%, TV -25%. Declare camera & location uses-feature required="false" to keep those devices supported. - Detect a real camera at runtime (PackageManager.FEATURE_CAMERA_ANY via the existing MethodChannel), cache it at bootstrap, and hide the QR scan button and the camera photo-source option when absent, so no broken actions are offered. Play "app optimization" recommendations: - Enable R8 (isMinifyEnabled + isShrinkResources) with keep rules for the OCR (tesseract4android), SQLCipher and notifications JNI/reflection code. - Bitmap downscaling: cacheWidth/cacheHeight (and ResizeImage for avatars) on list thumbnails and avatars so photos decode to on-screen size, not full res. - Edge-to-edge: opt in with transparent system bars in main(). Release flow: - Tagged builds now publish to the production track at 100% (was internal); add a manual deploy_internal lane as a QA safety net. - Document country/region availability as a Play Console setting (not in-repo).
This commit is contained in:
parent
f17ae7751c
commit
071be44851
17 changed files with 232 additions and 21 deletions
|
|
@ -15,7 +15,11 @@ git tag v0.1.0 && git push origin v0.1.0
|
|||
```
|
||||
|
||||
Forgejo Actions ([`../.forgejo/workflows/release.yml`](../.forgejo/workflows/release.yml))
|
||||
builds the signed AAB/APK and uploads to Play's **internal** track. No passwords are typed.
|
||||
builds the signed AAB/APK and uploads to Play's **production** track at **100%
|
||||
rollout**. No passwords are typed. Because a tag now publishes to everyone
|
||||
(subject to Google review), run the [manual smoke test](#manual-smoke-test-before-shipping)
|
||||
**before** tagging. To stage on the internal track first, run
|
||||
`bundle exec fastlane deploy_internal` by hand.
|
||||
|
||||
## Versioning
|
||||
|
||||
|
|
@ -123,6 +127,24 @@ listing (titles, descriptions, changelogs, screenshots) is read straight from
|
|||
`fastlane/metadata/android/`. Data Safety and content-rating answers:
|
||||
[`legal/internal/play-compliance.md`](legal/internal/play-compliance.md).
|
||||
|
||||
Lanes:
|
||||
- `deploy_play` — upload the AAB to **production** at 100% (what CI runs on tag).
|
||||
- `deploy_internal` — same AAB to the **internal** test track (manual QA safety net).
|
||||
- `deploy_metadata` — push only the store listing (no binary).
|
||||
- `promote_production` — promote an internal release to production without a rebuild.
|
||||
|
||||
### Country/region availability (Play Console, not this repo)
|
||||
|
||||
Which countries the app is offered in is **not** in the repo and `fastlane supply`
|
||||
does not manage it — it's a Play Console setting. To add countries:
|
||||
**Play Console → (Tane) → Production → Countries / regions → Add countries/regions**
|
||||
(under "Availability"). Play asks you to pick countries when you first move a
|
||||
release to production; widen the list there for new markets.
|
||||
|
||||
Note: the locales under `fastlane/metadata/android/<locale>` (`en-US`, `es-ES`)
|
||||
are **listing languages**, not countries — adding a locale improves the store
|
||||
page but does not by itself make the app available in a new country.
|
||||
|
||||
## Publish to F-Droid (official repo)
|
||||
|
||||
F-Droid builds from source after a merge request to `fdroiddata`. The build recipe
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue