Bir uygulamanın dondurulması teknik olarak nasıl çalışır?


22

Link2SD ve Titanium Backup gibi uygulamalar diğer uygulamaları "dondurabiliyor", bu uygulamaları kaldırmadan devre dışı bırakıyor. Bu uygulamalar bunu başarmak için ne yapar?

Yanıtlar:


28

Titanyum Yedekleme vb sadece Package Manager (pm)bir uygulamayı dondurmak için yerleşik kullanın. pmUygulamaların çalışmasını ve Başlatıcı'da görünmesini önleme özelliğine sahiptir. Bunu kullanmak için, Titanium Backup etc aşağıdaki komutu çalıştırır:

pm disable {paket_adı}

Özel bir dondurucu uygulaması kullanmadan uygulamaları kendiniz dondurmanız mümkündür. Terminal Emulator veya de yukarıdaki komutu kullanmanız yeterlidirADB Shell .

Örneğin, donmak istiyorsanız Stock Web Browser, açın Terminal Emulatorve sukomutu kullanarak root'a geçin . Ardından yürütün # pm disable com.android.browser.
Geri dönecek #Package com.android.browser new state: disabled. Bitti!
Giden uygulama simgesini görmek için Başlatıcı'yı yeniden başlatın (bazı cihazların yeniden başlatılması gerekebilir).

Sadece yerine, uygulamayı buzunu disableile enablekomuta.


Bu, burada açıklanan -STOP, kill -CONT komutları ile aynı mı? linuxpoison.blogspot.com/2007/11/…
NoBugs

@ NoBugs Cihazınızı yeniden başlatın. Bazı cihazlar bir uygulamayı tamamen devre dışı bırakmak için buna ihtiyaç duyar. Ve evet, bu öldür emri değil.
Android Quesito

Sağ. Bazen pm disablesadece "öldürüldü" diyor, ardından süreç hemen tekrar başlıyor. öldürmek -STOP pid daha iyidir. Hangisinin durduğunu, psçıktıda görebilirsiniz.
NoBugs

13

Nasıl pm disableçalıştığını buldum :

Eğer koşarsan cat /system/bin/pm, verir:

# 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 "$@"

Görünüşe göre Java'dan kullandığımız PackageManager ile aynı, onu çağırıyor - sadece hiçbir kullanıcı uygulamasının doğrudan erişemeyeceği kök bağlamda.

Bir şeyin donmuş olup olmadığını kontrol edebilirsiniz.

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

-4

Unix sistemlerinde, dosyalar 3 yetkilendirmeye sahiptir: okuma, yazma ve yürütme.

(3 kişi kategorisi için: dosyanın sahibi [genellikle yaratıcısı], bir grup insan ve diğerleri, ancak konu dışıdır).

Dosyanın yürütme yetkisini kaldırırsanız, artık başlatılamaz (yürütülemez).


Merhaba dralpuop. Android uygulamaları ikili değildir, bu nedenle çalıştırılabilir izinlerin eklenmesi veya kaldırılması bunların yürütülmesi için bir fark yaratmaz.
Firelord

Android, System 5 Unix'tir, burada (örneğin) kabuk komut dosyaları ikili değildir, ancak çalıştırılabilir izinleri eklemek veya kaldırmak fark yaratır.
dralpuop

Bir kabuk betiği, doğrudan bir denetleyiciye argüman olarak geçirilerek çalıştırılabilir bit seti olmadan çalıştırılabilir, bu nedenle kabuk betiği veya uygulamalar için bir fark yaratmaz. Soru ve soru, kabuk komutlarıyla ilgili değil, Android uygulamaları ile ilgili.
Firelord

1
Uygulamaların Android'de nasıl çalıştırıldığını bilmek için bu kaynağı deneyin. github.com/dogriffiths/HeadFirstAndroid/wiki/...
Firelord
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.