chore(android): prepare Android build for Google Play release#3488
Open
DeckerSU wants to merge 4 commits into
Open
chore(android): prepare Android build for Google Play release#3488DeckerSU wants to merge 4 commits into
DeckerSU wants to merge 4 commits into
Conversation
chore(release): v0.9.5 release candidate ## Summary This release prepares the `0.9.4` release line for mobile publishing as `0.9.5`, keeping the app version at `0.9.5+0` while incorporating the final mobile-readiness work from `dev`. It covers the published SDK `0.6.0` roll, the in-app legacy wallet migration flow, the iOS publishing identity update, Gleec Dex branding, web publishing alignment, and refreshed dependency metadata. ## New Features - **Legacy Wallet Migration Flow** ([@CharlVS], #3475) - Adds the app-side migration flow for discovering legacy native wallets, checking compatibility, preparing imports, integrating migrated wallets with auth/session state, and cleaning up migrated legacy data from settings. - **SDK 0.6.0 Integration** - Aligns the SDK submodule to the published `komodo-defi-sdk v0.6.0` release commit `ccc855082ee5026683188751484eed5342602698` and keeps the root lockfile aligned with the SDK package versions used by the app. ### SDK Updates This release integrates `komodo-defi-sdk v0.6.0` with the mobile publishing package set bringing: - **Legacy Wallet Migration Support** - Adds the `komodo_legacy_wallet_migration` package and supporting auth/framework hooks for discovering, verifying, importing, and cleaning up legacy wallet data. - **TRON/TRC20 Readiness** - Hardens TRON activation, TRC20 handling, transaction history through Tronscan, explorer URL support, and TRX market-data coordination. - **SIA Readiness** - Finalizes SIA activation and withdrawal handling for the mobile release line. - **Balance, Fee, and Market Data Hardening** - Adds balance recovery mode, richer fee information, cached spot-price continuity, CoinGecko failure cooldowns, icon-precache hardening, and numeric JSON compatibility. ## Bug Fixes - **Migration Startup and Compatibility Guardrails** ([@CharlVS], #3475) - Adds startup/settings migration services, compatibility dialog states, password-field handling, wallet metadata preparation, and migration cleanup coverage for legacy wallet users. - **Fiat Preference and Wallet Visibility Hardening** ([@CharlVS], #3475) - Stabilizes fiat onramp defaults and wallet-gated UI behavior as part of the migration-ready app flow. ## UI/UX Improvements - **Gleec Dex Branding Refresh** ([@CharlVS], #3479) - Keeps the updated Gleec Dex title, app metadata, icons, social preview assets, and Ramp logo cache-busting changes already prepared on `dev`. ## Platform-Specific Changes ### iOS - **Bundle Identifier and Signing Team Update** ([@DeckerSU], #3482) - Switches the iOS bundle identifier to `com.GleecDEX.wallet` and the signing team to `B52ZCS7TMQ` for mobile publishing. ### Android - **Package Path Alignment** ([@CharlVS], #3475) - Moves `MainActivity` into the Gleec package path used by the native release configuration. ### Web - **Web Publishing Adjustment** ([@DeckerSU], #3476) - Keeps the non-WASM web build path adjustment from `dev` so web publishing remains aligned with the current deployment target. ## Technical Improvements - **Legacy Migration Test Coverage** ([@CharlVS], #3475) - Adds unit/widget coverage for legacy app settings migration, legacy wallet migration, migration compatibility UI, cleanup UI, and fiat preference defaults. - **Release Metadata Refresh** - Keeps the app release name at `0.9.5+0`, aligns the SDK submodule with SDK `0.6.0`, refreshes dependency resolution, and aligns the Dart SDK floor with the generated lockfile at `>=3.11.0 <4.0.0`. ## Validation Release prep PR validation completed before merge: - `flutter pub get --offline` - `dart pub get --enforce-lockfile -C sdk` - `flutter analyze --no-fatal-warnings --no-fatal-infos` exited 0 with existing warning/info backlog - `flutter test test_units/main.dart` **Full Changelog**: [0.9.4...0.9.5](0.9.4...0.9.5)
Add com.google.android.gms.permission.AD_ID to the main manifest. The app uses Firebase Analytics, which accesses the advertising ID; apps targeting Android 13+ (API 33+) must declare this permission to keep using the advertising ID, otherwise it is zeroed out. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Flutter's Gradle migrator added these flags on a Flutter upgrade:
android.builtInKotlin=false -> Flutter does not apply the Kotlin
Gradle Plugin itself; the app keeps applying KGP manually
(kotlin-android in app/build.gradle + org.jetbrains.kotlin.android
in settings.gradle).
android.newDsl=false -> keep the legacy Flutter Gradle Plugin
DSL / plugin application.
Both are opt-out (false) compatibility flags that preserve the current
build behavior so the project keeps building unchanged after the
upgrade. Migrating to Built-in Kotlin / new DSL (flipping these to true
and removing the manual KGP declarations) is deferred until plugin
dependencies are confirmed compatible.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add explicit ignore patterns for release signing material so it can never be committed: **/*.jks -> keystores **/*.p12 -> PKCS#12 keystore exports android/key.properties -> store/key passwords and alias These hold the Google Play upload signing key and its passwords; a leak would let anyone sign uploads as us. The keystore must be supplied out-of-band (CI secrets / local file), not via VCS. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
Visit the preview URL for this PR (updated for commit a20dc43): https://walletrc--pull-3488-merge-p9g0adaw.web.app (expires Sun, 14 Jun 2026 00:45:06 GMT) 🔥 via Firebase Hosting GitHub Action 🌎 Sign: f66a4ff03faa546f12f0ae5a841bd9eff2714dcc |
Contributor
Author
|
Simultaneously with this PR, the following changes in the Flutter SDK must also be merged - GLEECBTC/komodo-defi-sdk-flutter#355 , and the updated version of the SDK must be included in this repository. |
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.
Summary
Android-side preparation for a Google Play release. Three small, independent
build/config changes — no application code is touched.
Changes
Declare
AD_IDpermission for analytics — addcom.google.android.gms.permission.AD_IDto the mainAndroidManifest.xml.The app uses Firebase Analytics, which accesses the advertising ID. Apps
targeting Android 13+ (API 33+) must declare this permission, otherwise the
advertising ID is zeroed out.
Pin legacy Kotlin/DSL build behavior — keep the
android.builtInKotlin=falseandandroid.newDsl=falseflags added by theFlutter Gradle migrator. They are opt-out compatibility flags that preserve
the current build behavior after the Flutter upgrade. Migrating to Built-in
Kotlin / the new DSL is deferred until plugin dependencies are confirmed
compatible.
Ignore Android signing secrets — add
**/*.jks,**/*.p12, andandroid/key.propertiesto.gitignoreso the Google Play upload signingkey and its passwords can never be committed. The keystore is supplied
out-of-band (CI secrets / local file), not via VCS.