Làm cách nào để tìm tên ứng dụng bằng UID?


38

Trong "lịch sử pin" tôi đã thấy rằng ứng dụng có UID 10058 đang sử dụng rất nhiều pin.

Làm cách nào tôi có thể tìm thấy tên của ứng dụng có UID bằng 10058?

Câu trả lời:


32

Android gán cho mỗi ứng dụng một UID (ID người dùng) khi cài đặt; Không giống như PID (ID tiến trình) nhất thời và luôn thay đổi liên tục, UID không đổi miễn là ứng dụng không được cài đặt lại. UID phải là duy nhất cho mỗi ứng dụng, trừ khi ứng dụng yêu cầu chia sẻ rõ ràng một userid với ứng dụng khác (có những hạn chế bảo mật xung quanh điều này, hai ứng dụng phải được ký với cùng một khóa riêng, tức là đến từ cùng một nhà phát triển).

Các ứng dụng này tuyên bố hiển thị UID của các ứng dụng:

CHỈNH SỬA:

Hãy thử xem /data/system/packages.xml(bạn cần root để xem tệp này), mỗi ứng dụng được cài đặt sẽ có một mục ở đó. Nói, tôi đã cài đặt Adobe Reader trong điện thoại của mình:

<package name="com.adobe.reader" codePath="/mnt/asec/com.adobe.reader-1/pkg.apk" flags="262144" ts="1300539048000" version="37149" userId="10034" installer="com.google.android.feedback">
<sigs count="1">
<cert index="21" key="... very long random string ..." />
</sigs>
<perms />
</package>

Điện thoại của tôi đã được gán userId="10034"cho Adobe Reader.

Đối với các ứng dụng đã yêu cầu chia sẻ id người dùng với một ứng dụng khác, hãy nói Handcent:

<package name="com.handcent.nextsms" codePath="/system/app/HandcentSMS.apk" flags="1" ts="1217592000000" version="373" sharedUserId="10064">
<sigs count="1">
<cert index="17" key="... very long random string ..." />
</sigs>
</package>

thì thuộc tính bạn đang tìm kiếm là sharedUserId="10064"


25

Thiết lập trong PC, kết nối thiết bị với PC, khởi chạy shell trên PC và nhập:

adb shell "dumpsys package | grep -A1 'userId=UID'"

Thay thế UIDbằng ID bạn đang tìm kiếm, chẳng hạn như 10102.

Thí dụ:

bash-4.2 # adb shell "gói dumpsys | grep -A1 'userId = 10102'"
   userId = 10102
   pkg = Gói {46171ce com.android.chrom }
bash-4.2 #

Dòng chứa Package{sẽ hiển thị tên gói của ứng dụng ở giữa khoảng trắng và }. Bạn có thể làm adb shell dumpsys package PKG_NAME( PKG_NAME→ tên gói của ứng dụng) để biết thêm chi tiết về gói / ứng dụng đó.


Nếu Android được root, từ adb shell hoặc ứng dụng giả lập thiết bị đầu cuối, bạn có thể làm:

su
mèo /data/system/packages.list | gID UID

Trong đầu ra, bất cứ điều gì trước UID là tên gói.

Thí dụ:

shell @ shamu: / $ su
root @ shamu: / # cat /data/system/packages.list | grep 10102
com.android.chrom 10102 0 /data/data/com.android.chrom mặc định 3002.3003.3001
root @ shamu: / #

Ngoài ra, nếu bạn đã cài đặt Busybox hoặc Toybox dưới biến PATH, từ trình giả lập thiết bị đầu cuối hoặc vỏ adb, hãy:

su
tìm / dữ liệu / dữ liệu / -type d -group UID -maxdepth 1 | tên cơ sở xargs

Thí dụ:

shell @ shamu: / $ su
root @ shamu: / # find / data / data / -group 10102 -type d -maxdepth 1 | tên cơ sở xargs
com.android.chrom
root @ shamu: / #

Vì chúng tôi quan tâm đến nhãn của ứng dụng chứ không phải tên gói, hãy tiếp tục với câu trả lời từ GAThrawn hoặc từ Izzy .


Sử dụng find /data/data/ -user UID -type d -maxdepth 1 | xargs basenamenếu bạn nhận được nhiều kết quả trong findlệnh đầu tiên .
Firelord

Điều này làm việc cho tôi mà không cần root.
Anubian Noob

5

Cài đặt trình giả lập thiết bị đầu cuối , khởi chạy nó và chạy:

ps | grep 10058

psliệt kê các quy trình và grepbộ lọc cho ID bạn muốn.

Nhưng điều này chỉ hoạt động nếu ứng dụng đang chạy khi bạn chạy lệnh.


Tôi thử cái này, nhưng nó không hoạt động, vì ứng dụng đó chưa chạy
azat

6
Đây là cho PID, người hỏi đã đề cập đến UID
Lie Ryan

2
UID được hiển thị trong đầu ra ps cũng như PID. Đầu ra ps thường có các dòng như '12345 app_118 ...' trong đó 12345 là PID và app_118 là UID (tương ứng với userId = 10118 trong /data/system/packages.xml)
Art Swri

5

Trong ADB shell (hoặc trình giả lập thiết bị đầu cuối) sử dụng lệnh sau:

cat /proc/<your_process_id_here>/status

và tìm trong trường "Tên". Đây phải là tên của quá trình. Vì vậy, trong trường hợp của bạn, nó sẽ là " cat / Proc / 10058 / status "


3
10058 được coi là PID ở đây trong khi OP đã cho chúng tôi UID.
Firelord

0

Tôi gặp vấn đề tương tự với Android 6.0, Moto G 2nd Gen từ năm 2014. Tôi tình cờ đã nâng cấp ứng dụng ES File Explorer và tôi nhận thấy nó bị phồng lên như địa ngục và ngốn rất nhiều pin. Tôi đã gỡ bỏ ứng dụng khỏi hệ thống, nhưng ứng dụng cho phép một quá trình zombie chiếm CPU. UID tương tự như 10118 của bạn và được liệt kê trong thống kê pin là quy trình tài nguyên đói nhất.

Sau đó, tôi đã cài đặt một ứng dụng có tên "OS Monitor" và nhận thấy rằng tệp .esfm thực sự là quá trình duy nhất chiếm 60% CPU. Tôi ngay lập tức biết rằng nó phải làm với ES File Explorer, nhưng đợi đã ... Tôi đã gỡ cài đặt ES File Explorer. Vâng. Điều duy nhất tôi không làm là RESTART điện thoại thông minh. Tin tôi đi, tôi đã nghĩ về những điều điên rồ, như nhổ tận gốc và đánh bại những thứ nhảm nhí trong quá trình đó, ném điện thoại vào tường và thậm chí bắt đầu tin rằng pin của tôi đã hết tuổi thọ. Thật ngạc nhiên, tôi chỉ cần khởi động lại điện thoại và quá trình đã biến mất.

Vì vậy, trước khi thực hiện bất kỳ biện pháp quyết liệt nào, hãy thử tìm ra ứng dụng nào mang lại cho bạn thời gian tồi tệ, gỡ cài đặt và sau đó khởi động lại điện thoại. Kiểm tra trên hệ điều hành Giám sát danh sách sử dụng CPU và bạn sẽ ổn.


0

Để tìm "mọi thứ" bằng UID (hoặc GroupID) trên điện thoại đã được root , bao gồm các quy trình đang chạy, ứng dụng hệ thống và cảm biến phần cứng:

# ID=3011; find / -group $ID -o -user $ID   2>/dev/null

Ví dụ 1:

# ID=3011; find / -group $ID -o -user $ID   2>/dev/null
/proc/208
/proc/208/task
/proc/208/task/208
/proc/208/task/208/attr
[...]

# ls -la /proc/208/exe
lrwxrwxrwx 1 root root 0 2017-04-04 22:14 /proc/208/exe -> /system/bin/sensors.qcom

Ví dụ 2

# ID=10009; find / -group $ID -o -user $ID   2>/dev/null
/data/misc/profiles/cur/0/com.android.cellbroadcastreceiver
/data/misc/profiles/cur/0/com.android.cellbroadcastreceiver/primary.prof
/data/data/com.android.cellbroadcastreceiver
/data/data/com.android.cellbroadcastreceiver/cache
/data/data/com.android.cellbroadcastreceiver/code_cache
/data/user_de/0/com.android.cellbroadcastreceiver
/data/user_de/0/com.android.cellbroadcastreceiver/cache
/data/user_de/0/com.android.cellbroadcastreceiver/code_cache
/data/user_de/0/com.android.cellbroadcastreceiver/code_cache/com.android.opengl.shaders_cache
/data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs
/data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs/com.android.cellbroadcastreceiver_preferences.xml
/data/user_de/0/com.android.cellbroadcastreceiver/shared_prefs/_has_set_default_values.xml
/data/user_de/0/com.android.cellbroadcastreceiver/databases
/data/user_de/0/com.android.cellbroadcastreceiver/databases/cell_broadcasts.db
/data/user_de/0/com.android.cellbroadcastreceiver/databases/cell_broadcasts.db-journal
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.