답변:
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"
PC에서 adb 를 설정 하고 장치를 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 : / #
터미널 에뮬레이터를 설치 하고 실행 한 후 다음을 실행하십시오.
ps | grep 10058
ps
grep
원하는 ID 의 프로세스 및 필터를 나열합니다 .
그러나 이것은 명령을 실행할 때 응용 프로그램이 실행중인 경우에만 작동합니다.
2014 년부터 Android 6.0, Moto G 2 세대와 비슷한 문제가 발생했습니다. ES 파일 탐색기 응용 프로그램을 업그레이드 한 결과 배터리가 많이 소모되는 것을 알았습니다. 시스템에서 응용 프로그램을 제거했지만 응용 프로그램에서 좀비 프로세스가 CPU를 차지하게했습니다. UID는 귀하의 10118과 유사하며 배터리 통계에서 가장 배고픈 리소스 프로세스로 표시되었습니다.
그런 다음 "OS Monitor"라는 앱을 설치하고 .esfm 파일이 실제로 CPU의 60 %를 차지하는 유일한 프로세스라는 것을 알았습니다. 나는 그것이 ES 파일 탐색기와 관련이 있다는 것을 즉시 알고 있었지만 기다려 ... ES 파일 탐색기를 제거했습니다. 예. 내가하지 않은 유일한 것은 스마트 폰을 다시 시작하는 것입니다. 나를 믿어, 나는 뿌리 내리고 그 과정에서 쓰레기를 물리 치고 벽에 전화를 던지고 배터리가 수명이 다했다는 것을 믿기 시작했습니다. 놀랍게도, 나는 단순히 전화를 다시 시작했고 프로세스는 사라졌습니다.
따라서 과감한 조치를 취하기 전에 어떤 앱이 나쁜 시간을 보내고 있는지 알아 낸 다음 제거하고 전화를 다시 시작하십시오. OS 모니터에서 CPU 사용량 목록을 확인하면 문제가 없습니다.
실행중인 프로세스, 시스템 앱 및 하드웨어 센서를 포함 하여 루팅 된 전화 에서 UID (또는 GroupID)로 "모든 것"을 찾으려면 다음을 수행하십시오.
# ID=3011; find / -group $ID -o -user $ID 2>/dev/null
# 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
# 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
find /data/data/ -user UID -type d -maxdepth 1 | xargs basename
첫 번째find
명령 에서 여러 결과를 얻는 경우 사용하십시오 .