Code Monkey home page Code Monkey logo

universal-android-debloater's Introduction

Universal Android Debloater GUI

DISCLAIMER: Use at your own risk. I am not responsible for anything that could happen to your phone.

uad_screenshot

This software is still in an early stage of development. Check out the issues, and feel free to contribute!

Summary

This is a complete rewrite in Rust of the UAD project, which aims to improve privacy and battery performance by removing unnecessary and obscure system apps. This can also contribute to improve security by reducing the attack surface.

Packages are as well documented as possible in order to provide a better understanding of what you can delete or not. The worst issue that could happen is removing an essential system package needed during boot causing then an unfortunate bootloop. After about 5 failed system boots, the phone will automatically reboot in recovery mode, and you'll have to perform a FACTORY RESET. Make a backup first!

In any case, you CANNOT brick your device with this software! That's the main point, right?

Features

  • Uninstall/Disable and Restore/Enable system packages
  • Multi-user support (e.g. apps in work profiles)
  • Export/Import your selection in uad_exported_selection.txt
  • Multi-device support: you can connect multiple phones at the same time
  • All your actions are logged, so you never forget what you've done

NB : System apps cannot truly be uninstalled without root (see the FAQ)

Universal Debloat Lists

  • GFAM (Google/Facebook/Amazon/Microsoft)
  • AOSP
  • Manufacturers (OEM)
  • Mobile carriers
  • Qualcomm / Mediatek / Miscellaneous

Manufacturers debloat lists

  • Archos
  • Asus
  • Blackberry
  • Gionee
  • LG
  • Google
  • iQOO
  • Fairphone
  • HTC
  • Huawei
  • Motorola
  • Nokia
  • OnePlus
  • Oppo
  • Realme
  • Samsung
  • Sony
  • Tecno
  • TCL
  • Unihertz
  • Vivo/iQOO
  • Wiko
  • Xiaomi
  • ZTE

Mobile carriers debloat lists

Country Carriers
France Orange, SFR, Free, Bouygues
USA T-Mobile, Verizon, Sprint, AT&T
Germany Telekom
UK EE

How to use it

  • Read the FAQ!

  • Do a proper backup of your data! You can never be too careful!

  • Enable Developer Options on your smartphone.

  • Turn on USB Debugging from the developer panel.

  • From the settings, disconnect from any OEM accounts (when you delete an OEM account package it could lock you on the lockscreen because the phone can't associate your identity anymore)

  • Install ADB (see the intructions by clicking on your OS below):

    LINUX
    • Install Android platform tools on your PC :

    Debian Base:

    sudo apt install android-sdk-platform-tools

    Arch-Linux Base:

    sudo pacman -S android-tools

    Red Hat Base:

    sudo yum install android-tools

    OpenSUSE Base:

    sudo zypper install android-tools

    MAC OS
    • Install Homebrew

    • Install Android platform tools

      brew install android-platform-tools

WINDOWS

  • Download the latest release of UAD GUI for your Operating System here. Take the opengl version only if the default version (with a Vulkan backend) doesn't launch.

  • NOTE: Chinese phones users may need to use the AOSP list for removing some stock apps because those Chinese manufacturers (especially Xiaomi and Huawei) have been using the name of AOSP packages for their own (modified & closed-source) apps.

    IMPORTANT NOTE: You will have to run this software whenever your OEM pushes an update to your phone as some uninstalled system apps could be reinstalled.

    How to contribute

    Hey-hey-hey! Don't go away so fast! This is a community project. That means I need you! I'm sure you want to make this project better anyway.

    ==> How to contribute

    Special thanks

    • @mawilms for his LotRO plugin manager (Lembas) which helped me a lot to understand how to use the Iced GUI library.
    • @casperstorm for the UI/UX inspiration.

    universal-android-debloater's People

    Contributors

    0x192 avatar adamlbs avatar amaanq avatar anonymouswp avatar charitra1022 avatar dianariyanto avatar fahadbinhussain avatar felurx avatar genodeftest avatar grafcube avatar gs1719 avatar hamidchikh avatar isarchy avatar jauchenpaule avatar jonas-ott avatar karlramstedt avatar lakshyarao22 avatar lavafroth avatar mcpengu avatar mikesim1 avatar mrhaydendp avatar nive9 avatar nozwock avatar ordoviz avatar prakharb5 avatar rabin-tech avatar rudxain avatar stormbeforesunsetbee avatar theembracedone avatar tmuyi avatar

    Stargazers

     avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

    Watchers

     avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

    universal-android-debloater's Issues

    Crash on launch

    In GitLab by @oksamit45 on Sep 26, 2021, 07:40

    Right, so i found this tool for my LG V40, i downloaded the drivers for it, downloaded, added platform tools to path and tried to launch the software, only for it to crash saying no device attached, any help on this? System is x64

    Filtering

    In GitLab by @W1nst0n on Aug 18, 2021, 23:04

    • Filtering with search bar
    • Filtering with picklist
      • State (Installed/Uninstalled/Disabled)
      • List (All, , Misc, Google, Carrier, AOSP)

    TODO: Each packages are linked to their list (add a new field in Package struct) -> filter by package

    Multi user support

    In GitLab by @W1nst0n on Aug 23, 2021, 18:58

    Allow to remove packages for all users (and not only user 0)

    • Multi user mode toogle in settings
    • Multi user view (view the packages for a user)
    • Actions affect the current user + (all the others if multi-user mode is on)

    Multi-selection action

    In GitLab by @W1nst0n on Aug 22, 2021, 02:55

    Very important feature!

    • Allow to select multiple packages and perform an action (uninstall/restore).
    • Add a button to perform an action on a whole list
    • Add a button to selec all the filtered packages

    Crash when starting UAD

    In GitLab by @tronprogram on Sep 29, 2021, 22:01

    Operating System: Windows 10 Home x64

    UAD version: 0.2.1

    Logfile (if needed):uad.log

    UAD crashes on startup after trying to connect it to an lge LG-M250 (LG K10 2017).
    First, it detects the device correctly, then it freezes and lastly, crashes and closes.
    adb detects the device correctly, adb is on PATH and needed USB drivers for the device are installed.

    Do we provide adb binary or not ?

    In GitLab by @W1nst0n on Aug 25, 2021, 23:07

    Several available options:

    • Embed adb inside the program (and write to a temp file to run it)
    • adb binary packaged (but outside of the uad-gui binary)
    • No adb but add a download button to fetching the lastest adb from developer.android.com so that uad-gui can use it (stored in temp dir?)
    • No adb. The user have to install it on its own.

    Using the 2 first options implies that we need to update uad-gui whenever adb is updated by Google. The thing is I don't know if we can trust Windows users to have up-to-date ADB...

    Note: If adb is shipped with uad-gui, it will only be for Windows build as it is really simple to install and keep updated adb in Linux/MacOS.

    Selection not restored because export and import expect different file names

    In GitLab by @silico-biomancer on Sep 28, 2021, 08:31

    I exported a selection, and closed UadGui. I re-opened it while my phone was plugged in, and nothing was selected. I confirmed that uad_selection.txt had all the expected packages listed in it, in the same directory as the exe.
    The path has no spaces in it. (C:\Users\User\Downloads\Programs)

    Windows 10, version 0.2. Side note, it might be useful to include app version info in the "about" page.
    Edit: Confirmed to also not be working on linux. Same error.

    Log:

    2021-09-28 19:25:10 WARN  [C:\Users\Lenovo\.cargo\registry\src\github.com-1ecc6299db9ec823\wgpu-core-0.10.4\src\device\mod.rs:4349] Surface does not support present mode: Mailbox, falling back to FIFO
    2021-09-28 19:25:10 INFO  [src\gui\mod.rs:103] ANDROID_SDK: 30 | PHONE: samsung SM-A305GN
    2021-09-28 19:25:11 WARN  [src\gui\views\list.rs:132] No custom selection imported: The system cannot find the file specified. (os error 2)
    2021-09-28 19:25:11 WARN  [C:\Users\Lenovo\.cargo\registry\src\github.com-1ecc6299db9ec823\wgpu-core-0.10.4\src\device\mod.rs:4349] Surface does not support present mode: Mailbox, falling back to FIFO
    

    (Note, "Lenovo" is not a folder on my computer. Is this hard-coded?)

    Translations

    Support for translations

    Available languages:

    • French
    • English

    com.huawei.parentcontrol can't be uninstalled/disabled

    It will not uninstall the package, the log is here:

    2021-10-14 12:59:57 INFO [src\gui\mod.rs:80] ANDROID_SDK: 29 | PHONE: HONOR HRY-LX1
    2021-10-14 12:59:58 WARN [src\gui\views\list.rs:121] No custom selection imported: The system cannot find the file specified. (os error 2)
    2021-10-14 13:00:04 ERROR [src\core\sync.rs:207] [Recommended] pm uninstall --user 0 com.huawei.parentcontrol -> Failure [DELETE_FAILED_INTERNAL_ERROR]

    Windows and MacOS build

    In GitLab by @W1nst0n on Aug 22, 2021, 24:53

    • Cross compile Linux -> Windows
    • Decide to ship Windows adb binary or not
    • Test on Windows
    • Test on MacOS ? (I can't)

    Scroll for description field

    In GitLab by @JanKoos007 on Oct 3, 2021, 21:32

    Operating System:

    UAD version:

    Logfile (if needed):

    Some descriptions are too long and go out of view without a scroll bar

    Screen_Shot_2021-10-03_at_21.31.53

    Allow to only restore or remove the selection

    In GitLab by @W1nst0n on Sep 25, 2021, 11:21

    Split the current Debloat/Restore selection button into 2 buttons: remove selection and restore selection.

    Use case

    A user choose some packages to remove from their phone. They decide to save their selection (in uad_exported_selection.txt) [#8] so they can quickly remove them again after a phone update that would have reinstalled some of those apps. After that update, they launch UAD which will automatically select the packages found in uad_exported_selection.txt. All the selected apps are not necessarily enabled apps (the phone update didn't reinstall all the debloated apps). The user only wants to uninstall the one that has been reinstalled.

    Flickering

    In GitLab by @lawson85 on Sep 14, 2021, 17:02

    I have restarted the program numerous times. Even tried with Run as administrator.

    2021-09-14_16-00-25

    Edit UAD package fields

    Allow to edit fields directly from the software and export the new json list.

    This will make life easier for contributors.

    ADB Error handling

    In GitLab by @W1nst0n on Aug 20, 2021, 24:00

    Handle ADB errors and display a message for the user (+ in the logfile)

    issue with refresh_btn_display

    In GitLab by @duelistjp on Sep 26, 2021, 18:39

    cargo build
       Compiling servo-fontconfig-sys v5.1.0
       Compiling servo-fontconfig v0.5.1
       Compiling font-kit v0.10.1
       Compiling iced_graphics v0.2.0 (https://github.com/hecrj/iced.git#35c4ad6d)
       Compiling iced_wgpu v0.4.0 (https://github.com/hecrj/iced.git#35c4ad6d)
       Compiling iced_winit v0.3.0 (https://github.com/hecrj/iced.git#35c4ad6d)
       Compiling iced v0.3.0 (https://github.com/hecrj/iced.git#35c4ad6d)
       Compiling uad_gui v0.2.0 (/home/duelistjp/Downloads/universal-android-debloater-rs-main)
    error[E0425]: cannot find value `refresh_btn_display` in this scope
       --> src/gui/mod.rs:152:72
        |
    152 |   let apps_refresh_btn = Button::new(&mut self.apps_refresh_btn, refresh_btn_display)
        |                                                                  ^^^^^^^^^^^^^^^^^^^ not found in this scope
    
    For more information about this error, try `rustc --explain E0425`.
    error: could not compile `uad_gui` due to previous error
    

    Serious review of the debloat list

    Parsing the old lists didn't 100% work. There are some missing descriptions and some packages aren't in the appropriate recommendation list (Recommended, Advanced, Expert, Unsafe)

    It will take time but this have to be done before v1.0

    Fails to launch on my Windows 10 x64

    In GitLab by @lawson85 on Sep 11, 2021, 21:40

    UAD 0.1 says in the top left corner, no phones attached even though it is and USB debugging is enabled. It then closes. I even tried running as administrator

    Signed binary

    Signing the binary will prevent Windows to display the warning message from Microsoft SmartScreen saying this software is unknown and may not be safe.

    A code signing certificate is not free. It's really expensive (like several hundreds euros a year). Certum is the cheapest Certification Authority (CA) I found for an open-source project. It's 25€/year (30€/year with taxes because I'm French) but it won't even remove the SmartScreen warning.

    I'd need to pay 250$ minimum per year to remove the warning. It is way too much and I don't want to collect donation for this. This is really a racket.

    More info on the reputation system of Microsoft SmartScreen

    The thing is there is now a completely new FOSS Signing Service called sigstore which looks amazing but it won't solve the SmartScreen warning issue.

    Refreshing for packages will change the theme back to Lupin

    My steps:

    1. Open UAD 0.3.0 (Windows)
    2. Open settings and change Lupin theme to dark/light
    3. Click the refresh package button
    4. The app theme will change to Lupin

    Closing the app and opening it again after changing theme will also change to Lupin

    Multi-device support

    For future reference I hope - add multiple device support. I always have an emulator running in the background and tried to use this on my phone. Unfortunately this just results in a "adb.exe: more than one device/emulator" which can simply be fixed by listing devices with adb devices then running each command per device with "adb -s " so "adb shell pm list packages" becomes "adb -s emulator-5554 pm list packages"

    Thanks!

    Tag safe/unsafe packages

    In GitLab by @W1nst0n on Aug 27, 2021, 17:28

    • Add a field in json package to assess our confidence in its removal.
    • Add a filter in GUI

    Not saving configuration

    After run this app, .. set to disable selected apps and close and run debloat app lost last settings... now is unstall apps and no disabled in the settings

    Documenting the undocumented

    {
    "id": "android",
    "list": "AOSP",
    "description": "This is Android System, do not remove it as it will brick your device.\n",
    "dependencies": null,
    "neededBy": null,
    "labels": null,
    "removal": "Unsafe"
    },

    {
    "id": "com.android.cts.priv.ctsshim",
    "list": "Unsure",
    "description": "Compatibility test.\nHere: https://forum.xda-developers.com/t/what-is-com-android-cts-priv-ctsshim.3859211/",
    "dependencies": null,
    "neededBy": null,
    "labels": null,
    "removal": "Advanced"
    },

    {
    "id": "com.android.phone",
    "list": "AOSP",
    "description": "Android Dialer",
    "dependencies": null,
    "neededBy": null,
    "labels": null,
    "removal": "Unsafe"
    },

    Import/Export custom selection

    In GitLab by @W1nst0n on Aug 22, 2021, 02:24

    Allow the user to export their current package selection to a file (uad_exported_selection.txt) so that UAD can automatically select the packages from this file upon startup.

    uk.co.ee.myee

    {
        "id": "uk.co.ee.myee",
        "list": "Carrier",
        "description": "The Myee app, it shows you your balance, allownaces and lets you pay your bill.\nIt contains lots of analytics and most of the things the app does can be done by texting 150 from your mobile.\nFor example, text boost to 150 to get free allowance increases for PAYG customers, or text balance to 150 for all customers",
        "dependencies": null,
        "neededBy": null,
        "labels": null,
        "removal": "Recommended"
    },
    

    UI relooking

    In GitLab by @W1nst0n on Aug 22, 2021, 02:46

    Current theme is quite ugly. This need to change!

    I'll clearly be inspired by Ajour. Its UI is really sleek!

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.