題:
系統應用程序和用戶應用程序之間有什麼區別?
Chance
2012-01-04 23:45:09 UTC
view on stackexchange narkive permalink

當我使用不同的ROM並使用Titanium Backup時,我發現應用程序被分類為系統和用戶應用程序。幾位ROM開發人員指出Titanium Backup僅應用於用戶應用程序,而不能用於系統應用程序,當我繼續卸載系統應用程序時,TiBu警告我ROM可能無法正常工作。

除了可以通過Market或其他方式下載用戶應用外,兩者之間的主要區別是什麼?

關於使系統應用程序與操作系統更緊密集成的系統應用程序有什麼意義?

五 答案:
Stephen Schrauger
2012-10-19 23:12:07 UTC
view on stackexchange narkive permalink

其他答案是正確的,但未能指出幾個不同之處:

權限

系統應用程序被授予請求某些永遠不可用的僅系統權限的能力用戶應用程序。這與root / sudo / su權限不同。

我知道並每天使用的一個示例是重置未接來電通知計數器的功能。我有Go Dialer,它可以代替股票撥號器和聯繫人應用程序(撥打電話的方式)。當我錯過來電時,Android會通過通知告知我。但是,即使Go Dialer在安裝應用程序時要求該許可,也不允許重置該計數器。 Android 2.2和更早版本允許用戶應用重置它,但是將此權限設置為android 2.3的僅系統可訪問權限。

通過將我的Go Dialer應用移動到系統分區,可以重置此計數器。應用程序不需要root用戶(當然,實際將應用程序移至系統分區除外)。

另一個系統權限是可以設置當前gps位置的功能。現在,Android確實有您可以允許模擬位置的首選項,因此您安裝的任何gps欺騙應用程序都可以聲明gps位置。但是,如果該應用位於系統分區中,則可以禁用模擬位置,同時仍然讓該應用欺騙gps位置。

更新

系統應用可以像用戶應用一樣進行更新,但是更新永遠不會集成到原始rom中。也就是說,系統應用程序具有獨特的功能,可以回滾到首次安裝rom時的版本。

移至SD

Android允許用戶將 user 從內部存儲器到SD卡的應用程序。系統應用程序無法移動,並且始終佔用一些內部空間。不過,大多數(所有?)設備在不同的分區上都有內部用戶應用程序,因此,卸載系統應用程序不會給您更多的用戶應用程序空間(除了刪除了dalvik緩存外)。

如果您卸載系統應用程序的任何更新,您將獲得一些空間。如上所述,更新未與rom集成,因此存儲在用戶空間中。更新也不允許移動到sd卡,但是如果刪除,則將恢復用戶空間。

它如何影響您

如果您是休閒的android用戶,則可能不會遇到系統與用戶應用會有所作為的情況。如果您是高級用戶,則可能具有root用戶,因此如果遇到以下情況之一,則可以將系統應用更改為用戶(反之亦然)。

您是說“這與root / su權限不同”嗎?我似乎記得,“ sudo”和“ su”並不相同-至少在Unix和Linux中如此。
沒錯,* nix中的su和sudo是不同的。但是`sudo`在這裡更適用,因為sudo要求root特權,而`su`只是要求切換用戶。為了使用su,您只需要知道要切換到的帳戶的密碼即可。如果您未指定帳戶,則要求成為root用戶。但是,在Android中,沒有root密碼,也沒有任何其他帳戶,因此su是用戶已知的命令,該命令在終端上運行以獲取root特權。
無論如何,我都會將答案更新為包含“ su”,因為這是某些Android用戶等同於root用戶的意思。
Matthew Read
2012-01-04 23:58:28 UTC
view on stackexchange narkive permalink

/ system 是只讀的,沒有root用戶,因此可以防止從 / system / app / system / priv-app 卸載應用程序。關鍵的應用程序放置在此處,以便無法卸載。他們不想讓您刪除的運營商產品也放置在此處。如果您是root用戶,則可以刪除後一類應用程序;

/ system / priv-app 也允許安裝在那裡的應用使用 signatureOrSystem 和其他特權。 Stephen的答案有一些示例。

對於為什麼應用可能很關鍵,這取決於ROM。舉例來說,HTC的Sense在很大程度上取決於其內置的應用程序。他們只是沒有設計自己的UI,使其不能與第三方應用程序本機一起工作(如果缺少系統應用程序,則可能會失敗)。其他應用實質上是Android操作系統的一部分,但Google將它們編碼為應用/服務(可能出於封裝和可靠性的原因)。

某些系統應用的更新可以通過Play商店下載,例如Google Maps 。如果尚未將其作為系統應用程序預先安裝在設備上,則可以使用Titanium將其從用戶應用程序轉換為系統應用程序。

這還意味著系統應用程序不能被任務殺手殺死嗎?還是殺死他們會自動啟動?
@ashishsony系統服務通常是自動啟動的,是的,但是(大多數?)應用/服務仍然可以被殺死。例如,我可以殺死設備上的瀏覽器。 (插入關於任務殺手的壞處的常規建議。)
正確的是,HTC設備上的系統應用程序(甚至包括Dropbox,Facebook之類的系統應用程序)與Sense UI集成得太深。必須避免將其刪除;除非非常必要,否則也不應將用戶應用程序轉換為系統應用程序,因為在某些ROM上,它們可能在內存不足的情況下不會終止。
@all的一個編程區別是系統(priv-app)應用程序從應用程序設置中接收系統廣播甚至是force_stop,而(用戶應用程序)非系統應用程序從設備設置中獲得force_stop則無法接收任何廣播。
Liam W
2012-01-04 23:54:26 UTC
view on stackexchange narkive permalink

系統應用程序是系統中包含的應用程序。它們位於/ system / app文件夾中。

運行它們需要絕大多數。其中的一個例子是撥號器(用於設置所有網絡連接)和瀏覽器,如果沒有這些瀏覽器,則應用程序內Web視圖將無法工作。

撥號程序設置網絡連接?
@MatthewRead是-是的!實際的“撥號程序”是位於撥號程序應用程序中的單獨活動。 Dialer.apk是用於設置連接性的應用程序-如果您需要驗證,凍結Dialer和Dialer存儲應用程序,則網絡將無法工作。
CCCP
2017-08-03 14:58:42 UTC
view on stackexchange narkive permalink

我想在以上答案中添加一些內容。與用戶應用程序不同,無法在完全恢復出廠設置時刪除系統應用程序。因此,如果您要刪除所有個人文件,但又太多了,以至於無法方便地刪除,那麼恢復出廠設置僅是最方便的選擇,並且您要保留應用程序,則可以將這些應用程序轉換為系統應用程序,以使它們贏得恢復出廠設置時不會被刪除。

有趣的提示!我現在想將音樂移至系統大聲笑
Alex Cohn
2018-02-06 15:42:00 UTC
view on stackexchange narkive permalink

系統應用程序的另一個功能是它們使用公共系統庫目錄(通常為 / 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



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...