Як технічна робота заморожування програми?


22

Такі програми, як Link2SD та Titanium Backup, можуть "заморозити" інші додатки, тобто відключити їх, не видаляючи їх. Що ці програми роблять для цього?

Відповіді:


28

Titanium Backup тощо просто використовуйте вбудований Package Manager (pm)для заморожування програми. pmмає функцію запобігання запуску програм і їх появі в Launcher. Щоб використовувати його, Titanium Backup і т.д. виконують таку команду:

вечір відключити {ім'я пакета}

Ви можете заморозити програми самостійно, не використовуючи спеціальний додаток для заморозки. Просто використовуйте вищевказану команду в термінальному емуляторі або ADB Shell.

Наприклад, якщо ви хочете заморозити Stock Web Browser, відкрийте Terminal Emulatorта переключіться на root за допомогою suкоманди. Потім виконати # pm disable com.android.browser.
Це повернеться #Package com.android.browser new state: disabled. Готово!
Перезапустіть запуск (деякі пристрої можуть потребувати перезавантаження), щоб побачити піктограму програми.

Для розморожування додатки, просто замініть disableз enableв команді.


Це те саме, що описані тут команди -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 авторизації: читати, записувати та виконувати.

(Для 3 категорій людей: власник файлу [зазвичай його створювач], група людей та всі інші, але це поза темою).

Якщо ви видалите авторизацію виконання файлу, він більше не може бути запущений (виконаний).


Привіт dralpuop. Програми для Android не є двійковими файлами, тому додавання або видалення дозволу, що виконується, не має значення для їх виконання.
Firelord

Android - це система 5 Unix, де (наприклад) сценарії оболонки не є двійковими файлами, але додавання та вилучення дозволеного файлу виконує різницю.
dralpuop

Сценарій оболонки може бути виконаний без встановленого біту, передаючи його як аргумент безпосередньо інтепретератору, тому це не має значення для скриптів оболонки або для додатків. Питання і питання стосується програм Android, до речі, а не скриптів оболонок.
Firelord

1
Спробуйте це джерело, щоб знати, як працюють програми в Android. github.com/dogriffiths/HeadFirstAndroid/wiki/…
Firelord
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.