Skip to content

feat(mobile): dev app gets its own label, launcher icon and version code - #693

Merged
thedancingdeveloper merged 2 commits into
mainfrom
fix/android-dev-branding
Sep 10, 2026
Merged

thedancingdeveloper merged 2 commits into
mainfrom
fix/android-dev-branding

Conversation

@thedancingdeveloper

Copy link
Copy Markdown
Contributor

What

The dev and prod Android shells install side by side but were indistinguishable on the home screen. The dev app now shows as Vogt Dev with an amber launcher icon (dark V glyph, DEV ribbon), and its Play version code climbs on every dev build.

How

  • VOGT_ANDROID_APP_NAME (already read by capacitor.config.ts) now also drives build.gradle, which generates app_name / title_activity_main as resValues; the static strings leave strings.xml so the two can't disagree.
  • VOGT_ANDROID_APP_ICON = default | dev selects the launcher set via manifest placeholders. The dev set is adaptive for API 26+ with a flattened layer-list fallback for minSdk 23. Any other value fails the build. Both sets are pinned in res/raw/keep.xml.
  • release-mobile-dev.yml sets both, and computes versionCode = semver code × 10000 + run number, versionName = <version>-dev.<run> — the last dev AAB upload was refused because 6002 had already been used.
  • release.yml sets nothing: prod label, icon and versioning are unchanged.
  • tests/test_mobile_identity.py gains a test holding the workflow and build files to this; docs/mobile-release-validation.md documents the three inputs.

Verified

assembleDebug locally with dev env (merged manifest: Vogt Dev, @mipmap/ic_launcher_dev) and with defaults (unchanged); a bad VOGT_ANDROID_APP_ICON fails configuration with a named error; identity tests pass.

🤖 Generated with Claude Code

https://claude.ai/code/session_01YG9Nsxqc6CREb56Uisnmmy

thedancingdeveloper and others added 2 commits September 11, 2026 09:21
…rsion code

The dev and prod shells already install side by side (distinct
applicationId) but looked identical on the home screen. The label and
launcher icon are now build inputs next to the id:

- VOGT_ANDROID_APP_NAME (the variable capacitor.config.ts already reads
  for appName) generates app_name/title_activity_main via resValue, so the
  two files cannot disagree; the static strings leave strings.xml.
- VOGT_ANDROID_APP_ICON selects the launcher set through manifest
  placeholders: default (shipped icon) or dev (amber background, dark V,
  DEV ribbon; adaptive for API 26+, flattened layer-list for minSdk 23).
  Any other value fails the build.
- release-mobile-dev.yml sets 'Vogt Dev' + dev, and computes a monotonic
  dev versionCode (<semver code> x 10000 + run number) with versionName
  <version>-dev.<run>, so a dev re-upload is never refused for a code Play
  has already seen. release.yml sets nothing and prod is unchanged.

tests/test_mobile_identity.py asserts the dev workflow builds under its
own label and icon and that the generated strings are not also static.
Verified locally: assembleDebug with both variants; merged manifest shows
the dev label/icon and the default one is byte-identical to before.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YG9Nsxqc6CREb56Uisnmmy
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YG9Nsxqc6CREb56Uisnmmy
@thedancingdeveloper
thedancingdeveloper merged commit 2c66c6d into main Sep 10, 2026
16 checks passed
@thedancingdeveloper
thedancingdeveloper deleted the fix/android-dev-branding branch September 10, 2026 23:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant