Remove Android Auto from the shipping app (clears the driving-mode rejection) - #809
Merged
Merged
Conversation
Play rejected versionCode 2100 under "Auto App Quality Guidelines: Visual
info on phone — your app does not disable features requiring phone
interaction while in driving mode". The review evidence is the car-screen
idle state, which read "Open FT8AF on your phone to start the FT8 engine":
the car both instructed phone interaction and left it available while
driving.
The idle template is now status only ("FT8AF is not on the air yet. QSO
status appears here once it is running."), and the one action that does
reach the phone — starting the app so it can create the engine — is
wrapped in ParkedOnlyOnClickListener, so the Auto host runs it only when
the car is parked and otherwise shows its own "not available while
driving" notice.
Template content is split out from resource lookup so the guarantee is
unit-testable: CarIdleTemplateTest pins the action as parked-only, and
checks the shipped string itself for phone-interaction wording so a later
copy edit can't quietly reintroduce the rejection.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B4bi57TiMribneqcSBddRB
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## dev #809 +/- ##
============================================
- Coverage 42.64% 42.41% -0.23%
- Complexity 226 228 +2
============================================
Files 267 270 +3
Lines 32068 32450 +382
Branches 3664 3735 +71
============================================
+ Hits 13675 13764 +89
- Misses 18132 18410 +278
- Partials 261 276 +15
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
Second Auto rejection in two months, so take Play's other path and stop
shipping as an Auto app rather than keep answering review findings.
versionCode 2100 was rejected under "Visual info on phone — your app does
not disable features requiring phone interaction while in driving mode";
versionCode 1327 was rejected in July under the NAVIGATION category ("does
not load map and user location"). The IOT/templates shape restored after
that first removal is what drew this one. No approved Auto category fits a
ham-radio QSO monitor well enough to be worth the review cycle right now.
- AndroidManifest.xml: drop the com.google.android.gms.car.application
descriptor, the androidx.car.app.minCarApiLevel meta-data and the
FT8AFCarAppService service. Nothing marks the app as Auto-enabled, so
Play no longer routes it through Auto app-quality review.
- Delete res/xml/automotive_app_desc.xml (dead once the descriptor is gone).
- CarAppManifestWiringTest: flip back from "AA is wired in the approved IOT
shape" to a guard asserting AA is unwired, with both rejections recorded
so a third revival is a deliberate act.
The car/ Kotlin package, its tests and the androidx.car.app:app dependency
stay in-tree (dead but compiling), as they did after the July removal, so
the feature can be revived. It carries the previous commit's driving-mode
fix, so a revival starts compliant with the finding that triggered this.
The debug-only AAOS scaffolding (src/debug CarAppActivity +
DebugInjectReceiver) is untouched; it never merges into release.
Verified: full testDebugUnitTest suite (3724 tests, 0 failures) plus
processReleaseMainManifest — the merged release manifest keeps only the
car-app library's own entries (connection provider, permission activity,
notification receiver), which carry no Auto descriptor or CarAppService.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B4bi57TiMribneqcSBddRB
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.
Why
Play rejected the update:
Both supporting-evidence screenshots are the same car screen — the Auto idle
state rendering "Open FT8AF on your phone to start the FT8 engine". That
message is what
QsoStatusScreen/RecentDecodesScreenfall back to wheneverMainViewModel.peekInstance()is null, i.e. any time Auto connects before thephone app has been opened. So the car screen instructed phone interaction, with
nothing gating it on the car being stopped.
This is the second Auto rejection in two months — versionCode 1327 was
rejected in July under the NAVIGATION category ("does not load map and user
location"), which is what PR #600 removed Auto for, before the IOT/templates
shape was restored. No approved Auto category fits a ham-radio QSO monitor well
enough to be worth another review cycle, so this PR takes Play's other path:
stop shipping as an Auto app.
What changed
1. Made the car UI compliant (
c95b4a05) — kept so a revival doesn't walkstraight back into this finding:
car_open_phone→car_engine_idle= "FT8AF isnot on the air yet. QSO status appears here once it is running." (en + pt-BR).
wrapped in
ParkedOnlyOnClickListener, so the host runs it only when parkedand otherwise shows its own "not available while driving" notice — the Car App
Library's sanctioned mechanism for exactly what the guideline asks.
2. Unwired Auto from the shipping app (
5177c3de):com.google.android.gms.car.applicationdescriptor, theandroidx.car.app.minCarApiLevelmeta-data and theFT8AFCarAppServiceservice. Nothing marks the app as Auto-enabled, so Play stops routing it
through Auto app-quality review.
res/xml/automotive_app_desc.xml.CarAppManifestWiringTestflips from "wired in the approved IOT shape" to aguard asserting Auto is unwired, recording both rejections so a third
revival has to be deliberate.
The
car/package, its tests and theandroidx.car.app:appdependency stayin-tree — dead but compiling — exactly as after the July removal. Debug-only
AAOS scaffolding (
src/debugCarAppActivity +DebugInjectReceiver) isuntouched; it never merges into release.
Tests
testDebugUnitTest: 3724 tests, 0 failures.processReleaseMainManifest: the merged release manifest keeps only thecar-app library's own entries (connection provider, permission activity,
notification receiver) — no Auto descriptor, no CarAppService. That is the
same state that shipped between PR Remove Android Auto support to clear Play production rejection #600 and the restore, which passed review.
CarIdleTemplateTest(4) pins the parked-only action and scans theshipped string for "phone"/"tap"/"touch", so a revival can't quietly
reintroduce the rejected wording.
One thing to check outside the repo
The app is registered for the Android Auto form factor in Play Console
(Advanced settings → Form factors). The manifest strip is the code half; if the
console entry still declares Auto, remove it there too before resubmitting.
🤖 Generated with Claude Code
https://claude.ai/code/session_01B4bi57TiMribneqcSBddRB