Chạy lệnh adb shell ngay trên điện thoại Android, không root
Cách chạy lệnh adb shell trên điện thoại không root. Khác biệt giữa shell của ứng dụng và quyền adb shell, cùng các lệnh pm, am, settings, dumpsys, wm, cmd hữu ích.
Bạn chạy được lệnh adb shell ngay trên điện thoại mà không cần root và không cần máy tính: dùng một terminal kết nối vào adb của chính máy qua Gỡ lỗi không dây (Android 11+). Khi đó lệnh chạy dưới người dùng shell, đúng quyền như adb shell từ máy tính, đủ để gỡ ứng dụng hệ thống cho người dùng hiện tại, đổi cài đặt ẩn, cấp quyền và xem dumpsys. Một terminal thường (không qua adb) chỉ có quyền của ứng dụng, yếu hơn nhiều.
Hai loại shell trên điện thoại
| Shell của ứng dụng | adb shell (người dùng shell) | |
|---|---|---|
| Cần gì | Không cần gì | Gỡ lỗi không dây, ghép nối một lần |
ls /sdcard | Tùy phiên bản Android, nhiều thư mục bị từ chối | Đọc được toàn bộ bộ nhớ chung |
pm uninstall --user 0 | Không | Có |
settings put global ... | Không | Có (hầu hết khóa) |
pm grant, appops set | Không | Có |
dumpsys, screencap, input | Bị chặn hoặc rỗng | Có |
Root (su) | Không | Không |
adb shell không phải root: nó không đọc được /data/data của ứng dụng khác và không sửa được phân vùng hệ thống. Nhưng nó làm được hầu hết các việc người dùng thường cần.
Mở terminal adb shell với ADB Kit
- Cài ADB Kit, ghép nối Gỡ lỗi không dây theo 5 bước ở tab Home (xem dùng ADB không cần máy tính).
- Mở tab Shell. Thanh trên cùng cho biết bạn đang ở chế độ nào:
- adb shell · toàn quyền: đã kết nối, lệnh chạy với quyền người dùng
shell(không phải root). - Shell của app · giới hạn: chưa kết nối, lệnh chạy bằng
shcủa chính ứng dụng. Nhấn Dùng adb để chuyển. - Gõ lệnh vào dòng lệnh rồi nhấn Enter.
Terminal là một phiên shell thật luôn mở (kiểu Termux), nên cd được giữ, mũi tên lên gọi lại lệnh cũ, Tab hoàn thành tên, Ctrl+C dừng lệnh, có màu, và chạy được top, vi, less. Phía dưới có hai hàng phím phụ (ESC, Tab, CTRL, ALT, mũi tên, HOME, END, PGUP, PGDN), Lệnh nhanh để lưu lệnh hay dùng, và gợi ý thư mục/tệp khi bạn gõ cd . Dùng hai ngón tay để phóng to, thu nhỏ chữ.
Menu ⋮ có Nhập tệp và Xuất tệp để đưa tệp vào thư mục hiện tại hoặc lấy tệp ra qua trình chọn tệp của hệ thống. Nếu shell của ứng dụng báo "Permission denied" trong bộ nhớ chung, một dải Chỉ adb mới mở được các tệp này hiện ra để bạn chuyển sang adb shell ngay tại thư mục đó.
Lưu ý: trên điện thoại bạn gõ thẳng lệnh, không gõ adb shell phía trước.
Lệnh hữu ích theo nhóm
Ứng dụng: pm
pm list packages -3 # ứng dụng bạn đã cài
pm list packages -s | grep facebook # ứng dụng hệ thống có chữ facebook
pm path com.example.app # đường dẫn APK
pm uninstall --user 0 com.example.bloat # gỡ cho người dùng hiện tại
cmd package install-existing com.example.bloat # cài lại ứng dụng vừa gỡ
pm disable-user --user 0 com.example.app
pm enable com.example.app
pm grant com.example.app android.permission.POST_NOTIFICATIONS
pm clear com.example.app # xóa dữ liệupm uninstall --user 0 không xóa ứng dụng khỏi phân vùng hệ thống, chỉ gỡ cho bạn, nên khôi phục cài đặt gốc sẽ đưa nó trở lại. Khi gỡ ứng dụng hệ thống, chỉ gỡ thứ bạn biết rõ: gỡ nhầm launcher hay trình cài đặt có thể khiến máy khó dùng.
Hoạt động và tiến trình: am
am force-stop com.example.app
am start -a android.intent.action.VIEW -d https://adbkit.com
am start -n com.android.settings/.SettingsCài đặt ẩn: settings
settings get global animator_duration_scale
settings put global window_animation_scale 0.5
settings put global transition_animation_scale 0.5
settings put global animator_duration_scale 0.5
settings put system screen_off_timeout 600000 # 10 phút
settings list secureMàn hình: wm
wm size # độ phân giải
wm density # DPI
wm density 400 # đổi DPI
wm density resetĐổi DPI quá lớn hay quá nhỏ có thể làm giao diện khó dùng. Nhớ lệnh reset trước khi thử.
Thông tin hệ thống: dumpsys, getprop
dumpsys battery
dumpsys battery set level 100 # giả lập mức pin (để test)
dumpsys battery reset
dumpsys meminfo com.example.app
getprop ro.product.model
getprop ro.build.version.releaseDịch vụ: cmd
cmd wifi status
cmd connectivity airplane-mode enable
cmd connectivity airplane-mode disable
cmd package list packages -d # ứng dụng đang bị tắtBật chế độ máy bay sẽ tắt Wi-Fi và cắt luôn kết nối adb. Tương tự, svc wifi disable sẽ ngắt adb ngay.
Thêm nhiều lệnh trong bảng lệnh adb.
Biến lệnh thành kịch bản
Nếu bạn hay chạy cùng một chuỗi lệnh (ví dụ đặt ba thông số hoạt ảnh về 0.5), lưu nó trong tab Auto script. Mỗi kịch bản là danh sách lệnh shell, chạy bằng một chạm, có thể đặt chạy hằng ngày theo giờ, và nhập/xuất được dưới dạng tệp JSON. Kịch bản nhập vào luôn tắt lịch chạy, để bạn kiểm tra lệnh trước.
Trên máy tính thì sao
Với máy tính và platform-tools, mọi lệnh trên chạy y hệt sau adb shell:
adb shell pm list packages -3
adb shell settings put global animator_duration_scale 0.5Cách trên điện thoại tiện khi không có máy tính bên cạnh. Bạn cũng có thể chạy shell trên một điện thoại khác cùng Wi-Fi, xem điều khiển Android bằng điện thoại khác.
Lỗi thường gặp
Permission deniedhoặcSecurityException: bạn đang ở Shell của app · giới hạn. Nhấn Dùng adb. Nếu vẫn lỗi, lệnh đó cần root.- Xiaomi báo lỗi với
inputhaypm grant: bật Gỡ lỗi USB (Cài đặt bảo mật), xem bài về Xiaomi. - Lệnh dừng giữa chừng sau khi tắt màn hình: Wi-Fi ngủ, kết nối rớt. Cắm sạc và bật Giữ màn hình bật trong Tools.
inaccessible or not found: sai tên lệnh hoặc lệnh không có trên phiên bản Android đó (toybox mỗi bản khác nhau).
An toàn
Quyền shell đủ để làm hỏng trải nghiệm dùng máy dù không có root. Đừng dán lệnh lạ từ mạng mà không hiểu nó làm gì, đặc biệt là pm uninstall, pm clear và settings put. ADB Kit miễn phí có quảng cáo. ADB Kit Pro chỉ bỏ quảng cáo.