Compatibility Issues with Specific Android Device Manufacturers in UAD-ng
UAD-ng maintains a curated database of Android packages that tracks known compatibility issues across major manufacturers like Huawei, Xiaomi, Samsung, Motorola, and LG, warning users before they disable proprietary system apps that could break critical functionality or prevent OTA updates.
Universal Android Debloater Next Generation (UAD-ng) is an open-source tool designed to remove bloatware from Android devices, but the repository explicitly documents compatibility issues with specific Android device manufacturers that can arise when disabling OEM-specific system packages. Because manufacturers like Huawei, Xiaomi, and Samsung modify the pure AOSP implementation with proprietary services, removing these packages can cause crashes, missing features, or failed system updates. The project mitigates these risks through a comprehensive package list and runtime detection mechanisms.
Documented Manufacturer-Specific Compatibility Risks
The resources/assets/uad_lists.json file serves as the central registry for package metadata, including detailed compatibility warnings for specific OEMs. The following manufacturers have documented high-risk packages that should not be disabled without understanding the consequences:
-
Huawei: The
com.huawei.hwservicespackage provides Huawei Mobile Services (HMS). Disabling this breaks HMS-dependent apps and core device functionality [see resources/assets/uad_lists.json lines 2166-2174]. -
Xiaomi: The
com.xiaomi.marketpackage shares the same package name as the AOSP Play Store on some builds. Removing it can break the default app installer and software distribution system [see resources/assets/uad_lists.json lines 3150-3166]. -
Samsung: The
com.samsung.android.app.sharepackage is required for Samsung Share features. Disabling this prevents app-to-app sharing functionality [see resources/assets/uad_lists.json line 30964]. -
Motorola: The
com.motorola.motodisplaypackage implements the "Always-On Display" feature. Disabling this breaks the ambient display functionality [see resources/assets/uad_lists.json line 4334]. -
LG: The
com.lge.lifebehaviorpackage contains services required for device setup and OTA updates on legacy devices [see resources/assets/uad_lists.json line 4070]. -
Generic CTS Packages: Packages matching
com.android.cts.**(Compatibility Test Suite) are used by manufacturers for device validation. Removing these can interfere with OTA update verification and manufacturer-provided compatibility checks [see resources/assets/uad_lists.json lines 8365-8369].
How UAD-ng Detects OEM-Specific Behavior
UAD-ng does not rely solely on static documentation. The application implements runtime detection of OEM-specific ADB error messages through the uad_core::sync::detect_cross_user_behavior function, as implemented in crates/uad-core/src/sync.rs. When a package state change triggers unusual cross-user behavior—common with manufacturer-modified Android builds—the system generates a user-facing warning.
The detection flow works as follows:
-
Package-State Verification: After toggling a package, the GUI calls
uad_core::sync::detect_cross_user_behaviorfromcrates/uad-gui/src/views/list.rs(lines 1077-1089). -
OEM-Specific Detection: The function inspects ADB error messages for patterns known to be OEM-specific.
-
UI Rendering: The application displays a modal warning: "This is unusual behavior that may be specific to your device manufacturer (OEM)."
// crates/uad-gui/src/views/list.rs (excerpt)
let error_modal = uad_core::sync::detect_cross_user_behavior(
&pkg_name,
device.adb_id.as_str(),
user_id,
wanted_state,
actual_state,
&device,
&before_cross_user_states,
)
.map(|notification| {
format!(
"Cross-User Behavior Detected:\n\n{notification}\n\n\
This is unusual behavior that may be specific to your device manufacturer (OEM). \
The package state has been successfully changed on the target user."
)
});
The Package List Database
The resources/assets/uad_lists.json file contains a description field that explicitly flags packages "required for compatibility" or that "may break [functionality] if disabled." When the UI loads these entries, the description surfaces in the details pane, alerting users before they take action.
// resources/assets/uad_lists.json (excerpt)
{
"package": "com.android.cts",
"description": "Compatibility Test Suite – Used by manufacturer to test your copy of the device for performance. Disabling may interfere with OTA updates."
}
This approach ensures that users cannot accidentally disable critical OEM infrastructure without explicit warning, addressing the "weird things OEMs do" documented in the project's README.md.
Summary
- Universal Android Debloater Next Generation tracks known compatibility issues with specific Android device manufacturers in a centralized JSON database.
- Major manufacturers including Huawei, Xiaomi, Samsung, Motorola, and LG implement proprietary packages that break core functionality when disabled.
- The
uad_core::sync::detect_cross_user_behaviorfunction incrates/uad-core/src/sync.rsprovides runtime detection of OEM-specific ADB behaviors. - The UI displays explicit warnings when users attempt to disable packages marked as required for compatibility in
resources/assets/uad_lists.json. - Removing Compatibility Test Suite (CTS) packages can prevent OTA updates on any manufacturer device.
Frequently Asked Questions
What happens if I disable a package with known manufacturer compatibility issues?
Disabling OEM-specific packages like com.huawei.hwservices or com.motorola.motodisplay can immediately break dependent features such as Huawei Mobile Services or Always-On Display. According to the source code in resources/assets/uad_lists.json, some packages also prevent future OTA updates or cause system instability.
Which Android manufacturers have the most documented compatibility issues?
The UAD-ng database shows extensive proprietary customization from Huawei, Xiaomi, Samsung, Motorola, and LG. Huawei and Xiaomi entries particularly note cross-dependencies with mobile services and app stores, while Samsung packages often tie into system-wide sharing frameworks.
How does UAD-ng prevent accidental removal of critical OEM packages?
The application implements a two-layer protection system: static warnings in resources/assets/uad_lists.json that display in the package description, and dynamic detection via uad_core::sync::detect_cross_user_behavior in crates/uad-core/src/sync.rs that monitors for OEM-specific ADB error patterns during runtime operations.
Can I safely remove CTS (Compatibility Test Suite) packages from any device?
No. As documented in resources/assets/uad_lists.json lines 8365-8369, removing com.android.cts.** packages interferes with manufacturer validation checks required for OTA updates. These packages exist across all manufacturers and serve as system integrity verification tools.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →