Repository navigation
Conversation
capture what a master TV has installed and disabled, check another unit against it, and sync the missing apps and the disabled set over ADB. Nothing is uninstalled, and the exit codes match check.py. Ships the master profile measured on a Chromecast with Google TV 4K, the guide, and the troubleshooting note that ADB never stays on by itself.
|
maintainer-bot review · this one needs a maintainer decision Thanks for the careful split from #3214 and the fake-TV harness, which lets sync be tested without a set. Copying apps between TVs is a new kind of feature, so this needs a scope call from the maintainer. Before that, it would help to send the disabling through disable.sh and to fold the drift check into check.py. Why it goes to a maintainer: the bot asks for a maintainer decision. Checks
This is a suggestion; a maintainer makes the final call. A maintainer can comment Reviewed by maintainer-bot · runs on 0G Private Computer |
|
A reader's map for this one:
Not tested: a unit whose Android version differs from the master's. |
A profile is hand-editable data, so its debloat list can name a package Android needs to boot. Sync now filters the disable step through recovery.core_packages, the same pattern tests/test_core_packages.py keeps identical to disable.sh and disable.ps1, and says which names it refused. The rest of the sync still runs.
|
Picked up both notes. The disabling step now refuses the core packages. What is still genuinely the maintainer's call: the whole destructive step could instead be delegated to On the #3198 collision: the two edits are not in the same region. That PR's |
|
Thanks @darkrei08, the fake-TV harness and the core-package guard in sync are careful work. Cloning a household's apps from one TV to others is outside the debloat core, so it fits best in your own repo with one SHOWCASE.md row pointing to it. Please drop the always-on ADB note and adbautoenable there too. We never point people at keeping ADB on at boot. |
tools/profile.pykeeps one household profile for TVs that should look the same: capture what a master unit has installed and disabled, check another unit against it, and sync the missing apps and the disabled set over ADB. Nothing is uninstalled; the exit codes are the onescheck.pyalready uses.capture: writesprofiles/<name>/with the package lists and a JSON summary.check: compares a unit against the profile and prints what drifts.sync --source: installs the missing apps (split APKs in one session, abandoned when the TV refuses the commit) and mirrors the disabled set.profiles/master/is the profile measured on a Chromecast with Google TV 4K: 20 apps and 16 disabled packages. The guide isdocs/profiles.md, anddocs/TROUBLESHOOTING.mdgains the note that ADB never stays on by itself, which the sync depends on.Tested on: Chromecast with Google TV 4K (
sabrina, Android 14), a second unit of the same model synced from it.tools/venv/bin/python -m unittest discover -s testspasses (2869 tests, 37 skipped).Second of the three PRs the bot asked for on #3214;
settings_sync.pyand the launcher change come separately.If this adds or changes a TV list
If this touches the launcher
If this adds or changes a theme
If this adds a theme key (a switch)
If this adds an add-on