Skip to content

Fix Wear OS sync by matching :wear's applicationId to :app's (issue #276) - #284

Merged
mapitman merged 1 commit into
mainfrom
issue-276-fix-wear-package-id
Sep 4, 2026
Merged

mapitman merged 1 commit into
mainfrom
issue-276-fix-wear-package-id

Conversation

@mapitman

@mapitman mapitman commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Summary

Follow-up fix to #276 (phase 1, PRs #278-283), found via real-device testing on a Pixel 10 Pro + Pixel Watch 4.

The queue never actually synced to the watch: :app's push succeeded with no exception, both devices saw each other as connected Play Services nodes, but the watch's own local Data Layer cache stayed empty no matter how long we waited — even after fully rebooting both devices.

Root cause (confirmed via Android's own Wear OS Data Layer documentation): the Data Layer API only syncs data between a phone app and a watch app that share the same package name. :wear's applicationId (com.bugzapperlabs.mycasts.wear) never matched :app's (com.bugzapperlabs.mycasts), so Play Services silently treated them as two unrelated apps regardless of node connectivity — no exception, no error, just nothing delivered. This is also why the user's previously-installed Pocket Casts phone+watch pair worked fine on the same hardware: real Wear OS companion apps always share one package name between the phone and watch halves.

Fix

Changed :wear's applicationId to com.bugzapperlabs.mycasts, matching :app exactly. The Kotlin package/namespace stays com.bugzapperlabs.mycasts.wear (namespace doesn't affect Play Services routing, only applicationId/package name does).

Test plan

  • ./gradlew assembleDebug testDebugUnitTest lintDebug passes across :app/:core/:wear
  • Real end-to-end verification on a Pixel 10 Pro + Pixel Watch 4 (already paired via the Wear OS companion app): uninstalled the old-package-name watch app, installed the fixed build, added an episode to Next Up on the phone, confirmed it landed in the watch's own local database and rendered correctly in the watch's queue screen within seconds

)

Real-device testing on a Pixel 10 Pro + Pixel Watch 4 (already paired
via the Wear OS companion app) showed the queue never syncing:
:app's push succeeded, both devices saw each other as connected
Play Services nodes, but the watch's own local Data Layer cache
stayed empty no matter how long we waited, even after rebooting both
devices.

Root cause, confirmed via Android's own Wear OS Data Layer docs: the
API only syncs data between a phone app and a watch app that share
the same package name. :wear's applicationId
(com.bugzapperlabs.mycasts.wear) never matched :app's
(com.bugzapperlabs.mycasts), so Play Services treated them as two
unrelated apps regardless of node connectivity -- this was silent
(no exception, no error) since it's authorization-level filtering,
not a connectivity failure.

Changed :wear's applicationId to com.bugzapperlabs.mycasts (matching
:app exactly; namespace/Kotlin package stays com.bugzapperlabs.mycasts.wear,
which doesn't affect Play Services routing). Verified end-to-end on
the real device pair: added an episode to Next Up on the phone,
confirmed it landed in the watch's own local database and rendered
in the watch's queue UI within seconds.
@mapitman
mapitman merged commit bb478a4 into main Sep 4, 2026
1 check passed
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