3 điểm bởi GN⁺ 2024-03-18 | 1 bình luận | Chia sẻ qua WhatsApp
  • Universal Android Debloater GUI là công cụ được viết lại hoàn toàn bằng Rust từ dự án UAD hiện có, nhằm loại bỏ các ứng dụng hệ thống Android không cần thiết hoặc ít được biết đến để cải thiện quyền riêng tư và thời lượng pin
  • Có thể gỡ bỏ/vô hiệu hóa các gói hệ thống và khôi phục/kích hoạt lại mà không cần root, đồng thời hỗ trợ đa người dùng, đa thiết bị, xuất/nhập mục đã chọn và nhật ký thao tác
  • Các gói được tài liệu hóa tối đa để giúp đánh giá có thể xóa hay không, nhưng nếu gỡ các gói hệ thống thiết yếu cần cho việc khởi động thì có thể gây ra bootloop
  • Trên thiết bị không root, không thể thực sự xóa hoàn toàn ứng dụng hệ thống; sau khi OEM cập nhật, một số ứng dụng hệ thống đã “gỡ bỏ” có thể được cài lại, nên cần chạy công cụ lần nữa
  • Danh sách hỗ trợ bao gồm Google/Facebook/Amazon/Microsoft, AOSP, OEM, nhà mạng, Qualcomm/Mediatek...; đồng thời có debloat list riêng theo từng hãng sản xuất và nhà mạng

Mục đích của Universal Android Debloater GUI

  • Universal Android Debloater GUI là dự án viết lại hoàn toàn bằng Rust của dự án UAD
  • Mục tiêu là loại bỏ các ứng dụng hệ thống không cần thiết và ít được biết đến để cải thiện quyền riêng tư và thời lượng pin
  • Việc gỡ ứng dụng hệ thống cũng có thể giúp cải thiện bảo mật bằng cách giảm bề mặt tấn công
  • Dự án hiện vẫn ở giai đoạn phát triển ban đầu, và khuyến khích kiểm tra issue cũng như đóng góp

An toàn và các cảnh báo chính

  • Việc sử dụng là tự chịu trách nhiệm; dự án không chịu trách nhiệm cho bất kỳ sự cố nào có thể xảy ra với điện thoại
  • Các gói được tài liệu hóa tối đa để giúp hiểu rõ hơn liệu có thể xóa chúng hay không
  • Tình huống tệ nhất là gỡ nhầm các gói hệ thống thiết yếu cần cho việc khởi động, dẫn đến bootloop
    • Sau khoảng 5 lần khởi động thất bại, điện thoại sẽ tự khởi động lại vào chế độ khôi phục
    • Trong trường hợp đó, cần thực hiện khôi phục cài đặt gốc
    • Cần sao lưu trước
  • Tài liệu nêu rõ rằng phần mềm này không thể làm thiết bị bị brick
  • Nếu không root, ứng dụng hệ thống không thể bị xóa hoàn toàn trong thực tế; xem chi tiết tại FAQ

Tính năng được hỗ trợ

  • Hỗ trợ Uninstall/DisableRestore/Enable cho các gói hệ thống
  • Hỗ trợ đa người dùng như ứng dụng trong hồ sơ công việc
  • Có thể xuất/nhập mục đã chọn thành uad_exported_selection.txt
  • Hỗ trợ đa thiết bị với nhiều điện thoại kết nối cùng lúc
  • Mọi thao tác đều được ghi lại thành log để người dùng không quên mình đã làm gì

Phạm vi danh sách Debloat

  • Universal Debloat Lists bao gồm các nhóm sau
    • GFAM: Google, Facebook, Amazon, Microsoft
    • AOSP
    • Nhà sản xuất (OEM)
    • Nhà mạng
    • Qualcomm, Mediatek và các bên khác
  • Danh sách debloat theo nhà sản xuất hỗ trợ Asus, LG, Google, Fairphone, Huawei, Motorola, Nokia, OnePlus, Oppo, Realme, Samsung, Sony, Tecno, Unihertz, Vivo/iQOO, Xiaomi, ZTE...
  • Archos, Blackberry, Gionee, iQOO, HTC, TCL, Wiko hiện vẫn chưa được đánh dấu trong danh sách nhà sản xuất
  • Danh sách debloat theo nhà mạng bao gồm các quốc gia và nhà mạng sau
    • France: Orange, SFR, Free, Bouygues
    • USA: T-Mobile, Verizon, Sprint, AT&T
    • Germany: Telekom
    • UK: EE

Quy trình sử dụng và các giới hạn

  • Trước tiên hãy đọc FAQsao lưu dữ liệu
  • Trên smartphone, cần bật Developer Options và trong bảng nhà phát triển phải bật USB Debugging
  • Cần hủy liên kết tài khoản OEM trong phần cài đặt
    • Nếu xóa gói tài khoản OEM, điện thoại có thể không còn liên kết được danh tính của người dùng và bị chặn ở màn hình khóa
  • Cần cài đặt ADB
    • Trên Linux, dùng trình quản lý gói của bản phân phối để cài android-sdk-platform-tools hoặc android-tools
    • Trên macOS, dùng Homebrew để cài android-platform-tools
    • Trên Windows, tải android platform tools, giải nén rồi thêm vào PATH hoặc chạy UAD trong cùng thư mục
    • Trên Windows, cài USB drivers cho thiết bị và kiểm tra phát hiện bằng adb devices
  • Có thể tải bản phát hành UAD GUI mới nhất cho hệ điều hành của bạn tại releases
    • Chỉ dùng bản opengl khi phiên bản backend Vulkan mặc định không chạy được
  • Người dùng điện thoại Trung Quốc có thể cần AOSP list để gỡ một số ứng dụng mặc định
    • Đặc biệt vì các hãng Trung Quốc như Xiaomi và Huawei đã dùng tên gói AOSP cho các ứng dụng tùy biến và mã nguồn đóng của riêng họ
  • Khi OEM phát hành bản cập nhật cho điện thoại, một số ứng dụng hệ thống đã “gỡ bỏ” có thể được cài lại, nên cần chạy lại phần mềm này

Đóng góp

  • Dự án là dự án cộng đồng; cách đóng góp được tổng hợp tại How to contribute

1 bình luận

 
GN⁺ 2024-03-18
Ý kiến trên Hacker News
  • Gần đây tôi mua tặng một người họ hàng một điện thoại Samsung tầm trung theo giá niêm yết, và số lượng ứng dụng cài sẵn nhiều đến khó tin
    Nhiều mạng xã hội và ứng dụng mua sắm đã được cài sẵn, cùng cả đống ứng dụng Samsung sao chép vụng về bộ ứng dụng Google
    Toàn bộ quá trình thiết lập ban đầu đầy rẫy dark pattern được thiết kế để rút càng nhiều dữ liệu càng tốt, nên có vẻ người dùng phổ thông khó mà đi qua mà không bỏ sót điều gì

    • Khi lần đầu dùng điện thoại Samsung, khoảng 2 tuần sau tôi phát hiện mọi từ tôi nhập vào bất kỳ ứng dụng nào đều đang bị thu thập và gửi cho bên thứ ba
      Chính sách quyền riêng tư của công ty đó ghi rằng họ dùng dữ liệu để suy đoán sở thích, đời sống xã hội, mức độ thông minh và trình độ học vấn, rồi bán dữ liệu cho “nghiên cứu thị trường”, v.v.
      Người dùng khó có thể nghi ngờ rằng bàn phím mặc định trên điện thoại sẽ để bên thứ ba đọc tin nhắn và email của mình
      Tôi chỉ biết chuyện sau khi tình cờ nhấn giữ một phím để mở cửa sổ “about samsung keyboard”, rồi từ đó lần theo chính sách quyền riêng tư và kiểm tra xem phím gõ được gửi đến công ty nào
      Tôi lập tức chuyển sang bàn phím mã nguồn mở; phải nói là có lẽ nhờ thu thập đầu vào của mọi người dùng nên kiểm tra chính tả và gợi ý nhập liệu của bàn phím Samsung thực sự rất tốt
    • Có thể đây là hiện tượng chỉ ở Mỹ
      Ba chiếc gần đây là Samsung S series bán tại EU; thứ có thể gọi là “ứng dụng bên thứ ba cài sẵn” chỉ khoảng Facebook và MS Office, và cả hai đều có thể gỡ dễ dàng
      Các ứng dụng thay thế của Samsung là vấn đề sở thích; tôi thấy chúng dễ dùng hơn “bản gốc” của Google
      Dựa trên việc đã dùng thử nhẹ điện thoại của các thương hiệu khác, Samsung thuộc nhóm khá tốt trong các lựa chọn Android về phần mềm và trải nghiệm người dùng
    • Tôi đã tức giận khi biết Grammarly được nhúng vào bàn phím mặc định và đang gửi mọi phím gõ đi mà không có sự đồng ý
      Trên một thiết bị flagship 1200 đô la, chuyện này thật đáng xấu hổ
    • Điện thoại Sony được cài sẵn bàn phím Microsoft SwiftKey
      Có mô tả rằng “nếu bạn không chọn sử dụng Microsoft SwiftKey Account trên thiết bị Android, mọi dữ liệu cá nhân và dữ liệu ngôn ngữ do Microsoft SwiftKey tạo ra sẽ được lưu cục bộ trên thiết bị và không được truyền đi”
      Tôi vẫn dùng vì nó chuyển đổi tự nhiên giữa các ngôn ngữ đang bật, và có thể nhập trơn tru cả những câu như “meet me at Østerport Station”
    • Tôi cảm thấy flagship của Samsung có phần cứng tốt nhất, và OneUI cũng đã cải thiện rất nhiều so với thời TouchWiz
      Tuy nhiên vấn đề nằm ở ứng dụng cài sẵn, nên mỗi khi mua điện thoại Samsung, việc đầu tiên tôi làm là chạy pm uninstall –k ––user 0
      Công cụ được liên kết cũng làm việc tương tự theo cách dễ dùng hơn, nhưng vẫn có những thứ như tài khoản Samsung hay các mục liên quan đến Knox không thể gỡ nếu không cài custom ROM
  • Dự án này đã không được bảo trì suốt 1 năm
    Bản fork được bảo trì mới nhất có thể xem tại https://github.com/Universal-Debloater-Alliance/universal-an...

  • Các lệnh tương ứng trên Android mà dự án này dùng đại khái như sau
    dpkg --get-selections: adb shell pm list packages | sort
    dpkg -r : adb shell pm uninstall -k --user 0
    Nếu muốn ẩn biểu tượng trên thanh trạng thái, tùy phiên bản có thể chạy adb shell dumpsys activity service SystemUIService, tìm “icon slots: ” để xác định tên, rồi đặt kiểu như adb shell settings put secure icon_blacklist battery,wifi,clock, ...
    Lệnh này sẽ ghi đè danh sách chặn hiện có bằng danh sách mới

    • Có nhiều thiết lập không được tài liệu hóa có thể thực hiện bằng những lệnh như vậy, và có những thứ được các nhà phát triển thêm vào vì nhu cầu riêng của họ
      Ví dụ, hầu hết đội ngũ cốt lõi Android và Pixel của Google đều biết người dùng muốn tách riêng nút bật/tắt Wi‑Fi và dữ liệu di động, nhưng sản phẩm thực tế lại chỉ đưa ra một ô cài đặt nhanh gộp cả hai
      Dù vậy, vẫn có thể khôi phục chế độ hai ô bằng thiết lập ẩn; tôi không hiểu vì sao chuyện như thế này lại thường xảy ra ở Google
  • Vài tuần trước tôi đã nghĩ về việc phát triển hệ điều hành phần mềm tự do mã nguồn mở cho thiết bị di động giờ ra sao rồi
    Tôi thắc mắc vì sao các hệ điều hành như GrapheneOS, CalyxOS chỉ dùng được trên điện thoại do Alphabet Inc làm ra mà không dùng được trên các thiết bị khác; những hệ điều hành kiểu phát triển Linux ngày xưa, gom đủ biến thể phần cứng để cung cấp driver và hỗ trợ cho gần như mọi thiết bị, đã đi đâu mất rồi
    Tôi tự hỏi có phải ngành phần cứng máy tính di động quá sợ hãi và bị khóa chặt đến mức người dùng không còn sở hữu thiết bị của mình, mà thành ra đang dùng thiết bị do một chủ thể khác sở hữu hay không
    Hay có lý do nào khác khiến không có hệ điều hành hỗ trợ nhiều thiết bị, cũng có thể tôi đang bỏ sót điều gì đó

    • Có lẽ nên xem như trên di động không có hệ điều hành mã nguồn mở
      GrapheneOS hay CalyxOS cũng không thể truy cập các driver thiết yếu, nên phải lấy các khối nhị phân từ image gốc rồi phân phối kèm
      Vì vậy các dự án này đầy rẫy driver kernel mã nguồn đóng, và bị ràng buộc vào một phiên bản kernel cụ thể để dùng các driver nhị phân đó
      Lập luận là rốt cuộc mức tối đa mà phiên bản mã nguồn mở có thể làm chỉ là chọn một bộ “ứng dụng hệ thống” khác, thực tế chỉ nhỉnh hơn đổi theme một chút
      Muốn hỗ trợ một thiết bị X cụ thể thì chỉ cần dùng lỗ hổng root để lấy các khối nhị phân, sau đó có thể phân phối cho thiết bị đó
    • Ví dụ trong https://androidauthority.com/grapheneos-3287030/ có nói “dù phải chấp nhận yêu cầu chỉ dành cho Pixel”, nhưng tôi hoàn toàn không có ý định chấp nhận điều đó
      https://grapheneos.org/faq#supported-devices cũng không thể chấp nhận được
      Nếu tôi nhớ không nhầm, Alphabet/Google từng nhận tiền để phân phối hệ điều hành Android, có lúc cũng tung ra điện thoại phần cứng rồi biến mất để các công ty khác tiếp tục, sau đó lại xuất hiện và có vẻ tận dụng nỗ lực của các nhà sản xuất khác để vượt lên
      Nhưng nếu hệ điều hành chỉ có trên điện thoại Google mà không có trên thiết bị khác thì tôi không biết như vậy có bình thường không, và cảm giác như họ đã hèn nhát chiếm đoạt công sức của người khác
      Danh sách thiết bị ở https://calyxos.org/#Devices đã tăng lên một chút so với bản cũ http://web.archive.org/web/20230605161332/https://calyxos.or..., nhưng không thể so với những thứ như OpenWRT, HyperWRT, DD-WRT, Tomato
      Vì vậy tôi không tin GrapheneOS hay CalyxOS, và muốn thấy trên điện thoại một xu hướng tương tự như việc nhiều firmware mã nguồn mở trên router Wi‑Fi từng hỗ trợ đa dạng thiết bị
  • Tôi từng thử áp dụng một trong các danh sách kiểu này trên một chiếc Xiaomi đã khôi phục cài đặt gốc, và nó hỏng ngay sau khi khởi động lại
    Ngay sau khi đăng nhập là crash tức thì nên không dùng được; cuối cùng cũng sửa được, nhưng tôi đã học được rằng phải cẩn thận
    Một mục là thiết yếu trên một model có thể lại là ứng dụng cài sẵn trên model khác

    • Không biết bạn có thể chia sẻ log cho biết đã gỡ gói nào thì xảy ra vấn đề đó không
  • Tôi không hiểu vì sao lại cần cái này
    Trong cài đặt điện thoại có thể vô hiệu hóa ứng dụng trực tiếp rồi, nên không rõ công cụ này bổ sung gì hơn
    FAQ có nói thêm về việc “gỡ” khỏi hồ sơ người dùng và xóa cache/dữ liệu, nhưng tôi không rõ chính xác điều đó nghĩa là gì

    • Một số ứng dụng cài sẵn của nhà sản xuất không thể vô hiệu hóa trong giao diện người dùng Android, nhưng có thể vô hiệu hóa bằng ADB
    • Trên Android TV, nếu không có ADB thì không thể vô hiệu hóa hoặc gỡ launcher mặc định đầy quảng cáo
    • Nhanh hơn, có thể chạy trước bước thiết lập ban đầu, và có thể xóa cả những mục không gỡ được bằng giao diện gói tiêu chuẩn
  • Có một công cụ GUI tương tự để dọn dẹp và tùy biến máy tính bảng Amazon Fire chưa root bằng ADB
    https://xdaforums.com/t/windows-linux-tool-fire-toolbox-v33-...

  • Tôi thắc mắc vì sao không thể biên dịch một bản Android hoàn toàn sạch từ source rồi cài trực tiếp lên điện thoại
    Điều gì đang ngăn việc đó

    • Thông thường là có thể
      Chỉ là phải là điện thoại cho phép mở khóa bootloader, và vì nhà sản xuất không cung cấp source của nhiều phần nên bạn không thể tạo ra đúng cùng một image như của nhà sản xuất
      Nếu phần cứng được hỗ trợ thì có thể cài một hệ điều hành do cộng đồng bảo trì như LineageOS
      Nhược điểm là các ứng dụng như Google Pay có thể không còn hoạt động, vì chúng phải vượt qua hệ thống chứng thực SafetyNet của Google
      Cũng có các cách обход, nhưng lúc nào trông cũng như một kiểu hack không ổn định
    • Là do driver thiết bị mã nguồn đóng
      Thị trường điện thoại giống thị trường desktop thập niên 90
    • Trên nền tảng PC x86, quy trình boot và việc dò tìm phần cứng đã được tiêu chuẩn hóa tốt, và ngay cả khi hệ điều hành đang chạy cũng có thể ghi đè kernel, nên việc đó khả thi
      Trên các máy tính không phải PC, những điều này không được đảm bảo
    • Theo tôi biết thì có thể làm điều đó trên điện thoại Google Pixel
      Không có nghĩa là dễ, nhưng mã nguồn thì có đủ
    • Là do hỗ trợ phần cứng
  • Muốn gỡ ứng dụng cài sẵn trên thiết bị Android thì dù trực tiếp hay gián tiếp, ADB là lựa chọn duy nhất
    Chiếc tablet Mediacom 10 inch giá rẻ tôi từng dùng trước đây cũng không root được bằng bất kỳ công cụ nào, nhưng việc gỡ các dịch vụ và mục không cần thiết thì trở nên dễ dàng với ADB
    Tuy khá nguy hiểm, nên cuối cùng Google services không chạy được nữa, nhưng vẫn dùng được Whatsapp để liên lạc với 7–8 người mà tôi không thuyết phục được họ dùng email, và cũng có thể tải từ F-Droid, vậy là đủ với tôi

  • Muốn biết có thể tìm danh sách mới nhất ở đâu, trong đó giải thích từng gói khó hiểu trên thiết bị Android thực sự làm gì và việc vô hiệu hóa/gỡ bỏ chúng sẽ ảnh hưởng ra sao
    Đặc biệt muốn biết về phụ thuộc giữa các gói, kiểu như gỡ một gói nhìn bề ngoài có vẻ không liên quan nhưng lại làm hỏng thứ khác