當我使用不同的ROM並使用Titanium Backup時,我發現應用程序被分類為系統和用戶應用程序。幾位ROM開發人員指出Titanium Backup僅應用於用戶應用程序,而不能用於系統應用程序,當我繼續卸載系統應用程序時,TiBu警告我ROM可能無法正常工作。
除了可以通過Market或其他方式下載用戶應用外,兩者之間的主要區別是什麼?
關於使系統應用程序與操作系統更緊密集成的系統應用程序有什麼意義?
當我使用不同的ROM並使用Titanium Backup時,我發現應用程序被分類為系統和用戶應用程序。幾位ROM開發人員指出Titanium Backup僅應用於用戶應用程序,而不能用於系統應用程序,當我繼續卸載系統應用程序時,TiBu警告我ROM可能無法正常工作。
除了可以通過Market或其他方式下載用戶應用外,兩者之間的主要區別是什麼?
關於使系統應用程序與操作系統更緊密集成的系統應用程序有什麼意義?
其他答案是正確的,但未能指出幾個不同之處:
系統應用程序被授予請求某些永遠不可用的僅系統權限的能力用戶應用程序。這與root / sudo / su權限不同。
我知道並每天使用的一個示例是重置未接來電通知計數器的功能。我有Go Dialer,它可以代替股票撥號器和聯繫人應用程序(撥打電話的方式)。當我錯過來電時,Android會通過通知告知我。但是,即使Go Dialer在安裝應用程序時要求該許可,也不允許重置該計數器。 Android 2.2和更早版本允許用戶應用重置它,但是將此權限設置為android 2.3的僅系統可訪問權限。
通過將我的Go Dialer應用移動到系統分區,可以重置此計數器。應用程序不需要root用戶(當然,實際將應用程序移至系統分區除外)。
另一個系統權限是可以設置當前gps位置的功能。現在,Android確實有您可以允許模擬位置的首選項,因此您安裝的任何gps欺騙應用程序都可以聲明gps位置。但是,如果該應用位於系統分區中,則可以禁用模擬位置,同時仍然讓該應用欺騙gps位置。
系統應用可以像用戶應用一樣進行更新,但是更新永遠不會集成到原始rom中。也就是說,系統應用程序具有獨特的功能,可以回滾到首次安裝rom時的版本。
Android允許用戶將 user
從內部存儲器到SD卡的應用程序。系統應用程序無法移動,並且始終佔用一些內部空間。不過,大多數(所有?)設備在不同的分區上都有內部用戶應用程序,因此,卸載系統應用程序不會給您更多的用戶應用程序空間(除了刪除了dalvik緩存外)。
如果您卸載系統應用程序的任何更新,您將獲得一些空間。如上所述,更新未與rom集成,因此存儲在用戶空間中。更新也不允許移動到sd卡,但是如果刪除,則將恢復用戶空間。
如果您是休閒的android用戶,則可能不會遇到系統與用戶應用會有所作為的情況。如果您是高級用戶,則可能具有root用戶,因此如果遇到以下情況之一,則可以將系統應用更改為用戶(反之亦然)。
/ system
是只讀的,沒有root用戶,因此可以防止從 / system / app
和 / system / priv-app
卸載應用程序。關鍵的應用程序放置在此處,以便無法卸載。他們不想讓您刪除的運營商產品也放置在此處。如果您是root用戶,則可以刪除後一類應用程序;
/ system / priv-app
也允許安裝在那裡的應用使用 signatureOrSystem
和其他特權。 Stephen的答案有一些示例。
對於為什麼應用可能很關鍵,這取決於ROM。舉例來說,HTC的Sense在很大程度上取決於其內置的應用程序。他們只是沒有設計自己的UI,使其不能與第三方應用程序本機一起工作(如果缺少系統應用程序,則可能會失敗)。其他應用實質上是Android操作系統的一部分,但Google將它們編碼為應用/服務(可能出於封裝和可靠性的原因)。
某些系統應用的更新可以通過Play商店下載,例如Google Maps 。如果尚未將其作為系統應用程序預先安裝在設備上,則可以使用Titanium將其從用戶應用程序轉換為系統應用程序。
系統應用程序是系統中包含的應用程序。它們位於/ system / app文件夾中。
運行它們需要絕大多數。其中的一個例子是撥號器(用於設置所有網絡連接)和瀏覽器,如果沒有這些瀏覽器,則應用程序內Web視圖將無法工作。
我想在以上答案中添加一些內容。與用戶應用程序不同,無法在完全恢復出廠設置時刪除系統應用程序。因此,如果您要刪除所有個人文件,但又太多了,以至於無法方便地刪除,那麼恢復出廠設置僅是最方便的選擇,並且您要保留應用程序,則可以將這些應用程序轉換為系統應用程序,以使它們贏得恢復出廠設置時不會被刪除。
系統應用程序的另一個功能是它們使用公共系統庫目錄(通常為 / system / lib 或)中的本機庫( libsomething.so 文件) / system / lib64 ),而不是來自應用程序專用庫目錄(例如, /data/app/com.example.HelloJni/lib/arm )。在Android Nougat之前,用戶應用程序可以自由加載和使用系統本機庫。稍後會施加限制,請參見 https://developer.android.com/about/versions/nougat/android-7.0-changes.html#ndk。