การแช่แข็งแอพทำงานอย่างไรในทางเทคนิค


22

แอพเช่น Link2SD และ Titanium Backup สามารถ "หยุด" แอพอื่น ๆ ที่ปิดใช้งานได้โดยไม่ต้องลบออก แอพเหล่านี้ทำอะไรเพื่อให้บรรลุเป้าหมายนี้

คำตอบ:


28

Titanium Backup เป็นต้นใช้เพียงแค่สร้างขึ้นPackage Manager (pm)เพื่อหยุดแอพ pmมีคุณสมบัติในการป้องกันไม่ให้แอปทำงาน & ไม่ให้ปรากฏใน Launcher หากต้องการใช้งาน Titanium Backup ฯลฯ จะดำเนินการคำสั่งต่อไปนี้:

ปิดการใช้งานน. {package_name}

คุณสามารถตรึงแอพได้ด้วยตัวเองโดยไม่ต้องใช้แอพช่องแช่แข็งเฉพาะ เพียงแค่ใช้คำสั่งดังกล่าวในการจำลอง terminalADB Shellหรือ

ตัวอย่างเช่นหากคุณต้องการตรึงStock Web Browserให้เปิดTerminal Emulator& สลับไปที่รูทโดยใช้suคำสั่ง # pm disable com.android.browserจากนั้นดำเนินการ มันจะกลับมา
#Package com.android.browser new state: disabledทำ!
รีสตาร์ท Launcher ของคุณ (อุปกรณ์บางอย่างอาจต้องรีบูต) เพื่อดูไอคอนแอพที่หายไป

หากต้องการละลายแอปให้แทนที่disableด้วยenableในคำสั่ง


นี่เป็นสิ่งเดียวกันกับคำสั่ง kill -STOP, kill -CONT หรือไม่ linuxpoison.blogspot.com/2007/11/…
NoBugs

@NoBugs รีบูตอุปกรณ์ของคุณ อุปกรณ์บางอย่างต้องการสิ่งนี้เพื่อปิดการใช้งานแอพอย่างสมบูรณ์ และใช่นี่ไม่ใช่คำสั่ง kill
Android Quesito

ขวา. บางครั้งpm disableบอกว่า "ถูกฆ่า" จากนั้นกระบวนการก็จะเริ่มขึ้นอีกครั้งทันที kill -STOP pid ดีกว่า คุณสามารถดูว่าจะหยุดที่ใดในการpsส่งออก
NoBugs

13

ฉันพบวิธีการpm disableทำงาน:

หากคุณเรียกใช้cat /system/bin/pmจะให้:

# Script to start "pm" on the device, which has a very rudimentary
# shell.
#
base=/system
export CLASSPATH=$base/framework/pm.jar
exec app_process $base/bin com.android.commands.pm.Pm "$@"

เห็นได้ชัดว่ามันเหมือนกับ PackageManager ที่เราใช้จาก Java มันเรียกมันว่า - ในบริบทของรูทที่ไม่มีแอพผู้ใช้สามารถเข้าถึงได้โดยตรง

คุณสามารถตรวจสอบว่ามีบางสิ่งค้างอยู่หรือไม่โดยใช้

getPackageManager().getApplicationEnabledSetting( the package name ) ==
        getPackageManager().COMPONENT_ENABLED_STATE_DISABLED)

-4

ในระบบ Unix ไฟล์มี 3 การอนุญาต: read, write และ execute

(สำหรับผู้คน 3 หมวดหมู่: เจ้าของไฟล์ [โดยปกติคือผู้สร้าง], กลุ่มคนและทุกคน แต่ไม่มีเนื้อหา)

หากคุณลบการอนุญาตให้เรียกใช้งานไฟล์จะไม่สามารถเปิดใช้งาน (เรียกใช้) อีกต่อไป


สวัสดี dralpuop แอพ Android ไม่ใช่ไบนารีดังนั้นการเพิ่มหรือลบสิทธิ์การใช้งานจะไม่สร้างความแตกต่างให้กับการดำเนินการ
Firelord

Android คือระบบ 5 Unix โดยที่ (ตัวอย่าง) เชลล์สคริปต์ไม่ได้เป็นไบนารี แต่การเพิ่มหรือลบสิทธิ์การใช้งานโปรแกรมจะสร้างความแตกต่าง
dralpuop

เชลล์สคริปต์สามารถดำเนินการได้โดยไม่ต้องตั้งค่าบิตเรียกใช้งานโดยส่งผ่านเป็นอาร์กิวเมนต์ไปยังผู้บุกรุกโดยตรงดังนั้นจึงไม่สร้างความแตกต่างให้กับเชลล์สคริปต์หรือแอป คำถามและคำถามเกี่ยวกับแอพ Android โดยที่ไม่เกี่ยวกับเชลล์สคริปต์
Firelord

1
ลองแหล่งข้อมูลนี้เพื่อดูว่าแอพทำงานอย่างไรใน Android github.com/dogriffiths/HeadFirstAndroid/wiki/…
Firelord
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.