回答:
Androidは、インストール時に各アプリケーションにUID(ユーザーID)を割り当てます。一時的で常に変化し続けるPID(プロセスID)とは異なり、UIDはアプリケーションが再インストールされない限り一定のままです。UIDは、アプリケーションが別のアプリケーションとユーザーIDを共有することを明示的に要求する場合を除き、各アプリケーションに固有でなければなりません(これに関するセキュリティ制限があり、2つのアプリケーションは同じ秘密鍵で署名する必要があります。
これらのアプリケーションは、アプリケーションのUIDを表示すると主張しています。
編集:
見てみてください/data/system/packages.xml
(このファイルを表示するにはrootが必要です)。インストールされた各アプリケーションにエントリがあるはずです。たとえば、携帯電話に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 package | grep -A1 'userId = 10102'" userId = 10102 pkg = Package {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:/ $ su root @ shamu:/#cat /data/system/packages.list | grep 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:/ $ su root @ shamu:/#find / data / data / -group 10102 -type d -maxdepth 1 | xargsベース名 com.android.chrome root @ shamu:/#
パッケージ名ではなくアプリのラベルに関心があるので、GATHhrawnまたはIzzy からの回答に進みます。
ターミナルエミュレータをインストールして起動し、実行します。
ps | grep 10058
ps
grep
必要なIDのプロセスとフィルターをリストします。
ただし、これは、コマンドの実行時にアプリケーションが実行されている場合にのみ機能します。
2014年からAndroid 6.0、Moto G 2nd Genで同様の問題が発生しました。ESFile Explorerアプリケーションを偶然アップグレードしましたが、地獄のように膨れ上がり、大量のバッテリーを消費していることに気付きました。システムからアプリケーションを削除しましたが、アプリケーションはゾンビプロセスにCPUを占有させました。UIDは10118と類似しており、最も空腹のリソースプロセスとしてバッテリー統計にリストされていました。
次に、「OS Monitor」という名前のアプリをインストールしましたが、実際には.esfmファイルがCPUの60%を占める唯一のプロセスであることに気付きました。ES File Explorerと関係があることがすぐにわかりましたが、待ってください... ES File Explorerをアンインストールしました。はい。私がやらなかったのは、スマートフォンを再起動することだけでした。私を信じて、私は狂気のことを考えていました。ルートになって、そのプロセスのがらくたを打ち負かし、電話を壁に投げつけ、さらに私のバッテリーが寿命に達したと信じ始めました。驚いたことに、私は単に電話を再起動し、プロセスがなくなった。
したがって、抜本的な対策を講じる前に、どのアプリがあなたに悪い時間を与えているかを把握し、それをアンインストールしてから電話を再起動してください。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
コマンドで複数の結果が得られる場合に使用します。