UID로 앱 이름을 어떻게 찾을 수 있습니까?


38

"배터리 기록"에서 UID 10058이있는 앱이 많은 배터리를 사용하고 있음을 발견했습니다.

UID가 10058 인 앱의 이름을 어떻게 찾을 수 있습니까?

답변:


32

Android는 설치시 각 애플리케이션에 UID (사용자 ID)를 할당합니다. 일시적이며 항상 계속 변경되는 PID (프로세스 ID)와 달리 응용 프로그램을 다시 설치하지 않는 한 UID는 일정하게 유지됩니다. UID는 애플리케이션이 다른 애플리케이션과 사용자 ID를 공유하도록 명시 적으로 요청하는 경우를 제외하고 각 애플리케이션마다 고유해야합니다 (이와 관련하여 보안 제한이있는 경우 두 애플리케이션은 동일한 개인 키로 서명해야합니다 (예 : 동일한 개발자가 제공함)).

이러한 응용 프로그램은 응용 프로그램의 UID를 표시한다고 주장합니다.

편집하다:

보고하십시오 /data/system/packages.xml(이 파일을 볼 루트 필요), 각 설치된 응용 프로그램이 항목이 있어야합니다. 전화기에 Adobe Reader가 설치되어 있다고 가정 해 보겠습니다.

<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>

휴대폰이 userId="10034"Adobe Reader에 할당 되었습니다.

다른 응용 프로그램과 사용자 ID 공유를 요청한 응용 프로그램의 경우 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>

당신이 찾고있는 속성은 sharedUserId="10064"


25

PC에서 를 설정 하고 장치를 PC에 연결 한 후 PC에서 쉘을 실행하고 다음을 입력하십시오.

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

교체 UID하면 다음과 같은 10102, 찾고있는 ID와 함께.

예:

bash-4.2 # adb shell "dumpsys 패키지 | grep -A1 'userId = 10102'"
   userId = 10102
   pkg = 패키지 {46171ce com.android.chrome }
bash-4.2 #

포함 된 행 Package{은 공백과 사이에있는 앱의 패키지 이름을 표시합니다 }. 해당 패키지 / 앱에 대한 자세한 내용을 보려면 adb shell dumpsys package PKG_NAME( PKG_NAME→ 앱의 패키지 이름)을 수행 할 수 있습니다 .


Android가 adb 쉘 또는 터미널 에뮬레이터 앱 에서 루팅 된 경우 다음을 수행 할 수 있습니다.

수
cat /data/system/packages.list | grep UID

출력에서 UID 앞의 것은 패키지 이름입니다.

예:

shell @ shamu : / $ 수
root @ shamu : / # 고양이 /data/system/packages.list | 그렙 10102
com.android.chrome 10102 0 /data/data/com.android.chrome 기본값 3002,3003,3001
root @ shamu : / #

또는 Busybox 또는 Toybox를 설치하고 PATH 변수 아래에서 사용 가능한 경우 터미널 에뮬레이터 또는 adb 쉘에서 다음을 수행하십시오.

수
/ data / data / -type d -group UID -maxdepth를 찾으십시오. 1 | xargs 기본 이름

예:

shell @ shamu : / $ 수
root @ shamu : / # 찾기 / data / data / -group 10102 -type d -maxdepth 1 | xargs 기본 이름
com.android.chrome
root @ shamu : / #

패키지 이름이 아닌 앱 레이블에 관심이 있으므로 GAThrawn 또는 Izzy 의 답변 진행하십시오 .


find /data/data/ -user UID -type d -maxdepth 1 | xargs basename첫 번째 find명령 에서 여러 결과를 얻는 경우 사용하십시오 .
Firelord

이것은 루트없이 저에게 효과적입니다.
Anubian Noob

5

터미널 에뮬레이터를 설치 하고 실행 한 후 다음을 실행하십시오.

ps | grep 10058

psgrep원하는 ID 의 프로세스 및 필터를 나열합니다 .

그러나 이것은 명령을 실행할 때 응용 프로그램이 실행중인 경우에만 작동합니다.


나는 이것을 시도하지만, 그런 응용 프로그램이 아직 실행되지 않기 때문에 작동하지 않습니다
azat

6
이것은 PID를위한 것이며, asker는 UID를 언급하고 있습니다.
Lie Ryan

2
UID는 ps 출력과 PID에 표시됩니다. ps 출력에는 일반적으로 '12345 app_118 ...'과 같은 줄이 있습니다. 여기서 12345는 PID이고 app_118은 UID입니다 (/data/system/packages.xml의 userId = 10118에 해당)
Art Swri

5

ADB 쉘 (또는 터미널 에뮬레이터)에서 다음 명령을 사용하십시오.

cat /proc/<your_process_id_here>/status

"이름"필드를 확인하십시오. 프로세스 이름이어야합니다. 따라서 귀하의 경우에는 " cat / proc / 10058 / status "


3
OP가 UID를 제공하는 동안 10058은 PID로 간주됩니다.
Firelord

0

2014 년부터 Android 6.0, Moto G 2 세대와 비슷한 문제가 발생했습니다. ES 파일 탐색기 응용 프로그램을 업그레이드 한 결과 배터리가 많이 소모되는 것을 알았습니다. 시스템에서 응용 프로그램을 제거했지만 응용 프로그램에서 좀비 프로세스가 CPU를 차지하게했습니다. UID는 귀하의 10118과 유사하며 배터리 통계에서 가장 배고픈 리소스 프로세스로 표시되었습니다.

그런 다음 "OS Monitor"라는 앱을 설치하고 .esfm 파일이 실제로 CPU의 60 %를 차지하는 유일한 프로세스라는 것을 알았습니다. 나는 그것이 ES 파일 탐색기와 관련이 있다는 것을 즉시 알고 있었지만 기다려 ... ES 파일 탐색기를 제거했습니다. 예. 내가하지 않은 유일한 것은 스마트 폰을 다시 시작하는 것입니다. 나를 믿어, 나는 뿌리 내리고 그 과정에서 쓰레기를 물리 치고 벽에 전화를 던지고 배터리가 수명이 다했다는 것을 믿기 시작했습니다. 놀랍게도, 나는 단순히 전화를 다시 시작했고 프로세스는 사라졌습니다.

따라서 과감한 조치를 취하기 전에 어떤 앱이 나쁜 시간을 보내고 있는지 알아 낸 다음 제거하고 전화를 다시 시작하십시오. OS 모니터에서 CPU 사용량 목록을 확인하면 문제가 없습니다.


0

실행중인 프로세스, 시스템 앱 및 하드웨어 센서를 포함 하여 루팅 된 전화 에서 UID (또는 GroupID)로 "모든 것"을 찾으려면 다음을 수행하십시오.

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

예 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

실시 예 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.