ใน "ประวัติแบตเตอรี่" ฉันพบว่าแอพที่มี UID 10058 ใช้แบตเตอรี่จำนวนมาก
ฉันจะค้นหาชื่อแอพที่มี UID เท่ากับ 10058 ได้อย่างไร
ใน "ประวัติแบตเตอรี่" ฉันพบว่าแอพที่มี UID 10058 ใช้แบตเตอรี่จำนวนมาก
ฉันจะค้นหาชื่อแอพที่มี UID เท่ากับ 10058 ได้อย่างไร
คำตอบ:
Android จะกำหนด UID (ID ผู้ใช้) แต่ละแอปพลิเคชันในเวลาติดตั้ง แตกต่างจาก PID (ID กระบวนการ) ซึ่งเป็นแบบชั่วคราวและเปลี่ยนแปลงตลอดเวลา UID จะคงที่ตราบใดที่ไม่ได้ติดตั้งแอปพลิเคชันใหม่ UID ควรไม่ซ้ำกันสำหรับแต่ละแอปพลิเคชันยกเว้นเมื่อแอปพลิเคชันร้องขอให้แชร์หมายเลขผู้ใช้กับแอปพลิเคชันอื่นอย่างชัดเจน (มีข้อ จำกัด ด้านความปลอดภัยเกี่ยวกับเรื่องนี้ทั้งสองแอปพลิเคชันนั้น
แอปพลิเคชันเหล่านี้อ้างว่าแสดง 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"
ตั้งค่าadbในพีซีเชื่อมต่ออุปกรณ์กับพีซีเปิดตัวเชลล์บนพีซีและป้อน:
adb shell "dumpsys package | grep -A1 'userId=UID'"
แทนที่UID
ด้วย ID ที่คุณต้องการเช่น 10102
ตัวอย่าง:
bash-4.2 # adb shell "แพ็คเกจ dumpsys | grep -A1 'userId = 10102'" หมายเลขผู้ใช้ = 10102 pkg = แพ็คเกจ {46171ce com.android.chrome } ทุบตี-4.2 #
บรรทัดที่มีจะแสดงชื่อแพคเกจของแอปในระหว่างช่องว่างและPackage{
}
คุณสามารถทำได้adb shell dumpsys package PKG_NAME
( PKG_NAME
→ชื่อแพ็คเกจของแอพ) เพื่อทราบรายละเอียดเพิ่มเติมเกี่ยวกับแพ็คเกจ / แอพนั้น
หาก Android รูตจากadb shellหรือเทอร์มินัลอีมูเลเตอร์คุณสามารถทำสิ่งต่อไปนี้
su 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 shell ให้ทำดังนี้
su find / data / data / -type d -group UID -maxdepth 1 | xargs basename
ตัวอย่าง:
shell @ shamu: / $ su root @ shamu: / # find / data / data / -group 10102 -type d -maxdepth 1 | xargs basename com.android.chrome root @ shamu: / #
เนื่องจากเรามีความสนใจในป้ายชื่อของ app และไม่ได้ชื่อแพคเกจให้ดำเนินการกับคำตอบจาก GAThrawnหรือจากอิซซี่
ติดตั้งเทอร์มินัลอีมูเลเตอร์เปิดใช้งานและรัน:
ps | grep 10058
ps
แสดงกระบวนการและgrep
ตัวกรองสำหรับ ID ที่คุณต้องการ
แต่จะทำงานได้ก็ต่อเมื่อแอปพลิเคชันทำงานเมื่อคุณเรียกใช้คำสั่ง
ใน ADB เชลล์ (หรือเทอร์มินัลอีมูเลเตอร์) ใช้คำสั่งต่อไปนี้:
cat /proc/<your_process_id_here>/status
และดูในฟิลด์ "ชื่อ" นี่ควรเป็นชื่อของกระบวนการ ดังนั้นในกรณีของคุณมันจะเป็น " cat / proc / 10058 / status "
ฉันมีปัญหาที่คล้ายกันกับ Android 6.0, Moto G 2nd Gen จากปี 2014 ฉันได้อัพเกรดแอปพลิเคชั่น ES File Explorer และฉันสังเกตว่ามันป่องเหมือนนรกและดูดแบตเตอรี่จำนวนมาก ฉันลบแอปพลิเคชันออกจากระบบ แต่แอปพลิเคชันปล่อยให้กระบวนการซอมบี้ทำให้ CPU ทำงาน โพสต์คล้ายกับของคุณ 1,0118 และมันแสดงอยู่ในสถิติแบตเตอรี่ว่าเป็นกระบวนการทรัพยากรที่หิวที่สุด
จากนั้นฉันติดตั้งแอพชื่อ "OS Monitor" และสังเกตว่าไฟล์. esfm เป็นกระบวนการเดียวที่ใช้ CPU ถึง 60% ฉันรู้ทันทีว่ามันเกี่ยวกับ ES File Explorer แต่รอ ... ฉันได้ถอนการติดตั้ง ES File Explorer แล้ว ใช่. สิ่งเดียวที่ฉันไม่ได้ทำคือรีสตาร์ทสมาร์ทโฟน เชื่อฉันฉันกำลังคิดเกี่ยวกับสิ่งต่าง ๆ ที่บ้าคลั่งเช่นหยั่งรากและเอาชนะอึออกจากกระบวนการนั้นโยนโทรศัพท์ไปที่กำแพงและเริ่มเชื่อว่าแบตเตอรี่ของฉันหมดอายุ ด้วยความประหลาดใจฉันเพิ่งรีสตาร์ทโทรศัพท์และกระบวนการก็หายไป
ดังนั้นก่อนที่จะใช้มาตรการรุนแรงลองคิดดูว่าแอพใดให้เวลาคุณไม่ดีถอนการติดตั้งแล้วรีสตาร์ทโทรศัพท์ ตรวจสอบระบบปฏิบัติการตรวจสอบรายการการใช้งาน CPU และคุณควรจะปรับ
เพื่อหาข้อมูลทุกอย่าง "" โดยโพสต์ (หรือ 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
คำสั่งแรก