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


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.