Каковы различия между системным приложением и приложением пользователя?

29

Поскольку я играл с разными ПЗУ и использовал Titanium Backup, я вижу, что приложения подразделяются на системные и пользовательские приложения. Некоторые разработчики ПЗУ заявляют, что Titanium Backup следует использовать только для пользовательских приложений, а не для системных приложений, и когда я приступаю к удалению системных приложений, TiBu предупреждает меня, что ПЗУ может работать некорректно.

Помимо того факта, что пользовательские приложения можно загрузить через Маркет или каким-либо другим способом, каковы основные различия между ними?

Что такого в системных приложениях, которые делают их более интегрированными в саму ОС?

шанс
источник

Ответы:

21

/systemтолько для чтения без рута, поэтому он предотвращает удаление приложений из /system/appи /system/priv-app. Приложения, которые являются критическими, помещаются туда, чтобы их нельзя было удалить. Носители-носители, которые они не хотят, чтобы вы удалили, также находятся там. Последняя категория приложений может быть удалена, если вы рутированы; бывший не так уж и много.

/system/priv-appтакже позволяет использовать установленные там приложения signatureOrSystemи другие привилегированные разрешения. Ответ Стивена имеет несколько примеров.

Что касается того, почему приложения могут быть критическими, это зависит от ПЗУ. Например, HTC Sense сильно зависит от своих встроенных приложений от того, что я слышу. Они просто не спроектировали свой пользовательский интерфейс так, чтобы он изначально работал со сторонними приложениями (или не получался, если системные приложения отсутствовали). Другие приложения по сути являются частью ОС Android, но Google закодировал их как приложения / сервисы (вероятно, из-за инкапсуляции и надежности).

Обновления для некоторых системных приложений можно загрузить через магазин Play Store, например, Google Maps. Если оно не было предварительно установлено в качестве системного приложения на вашем устройстве, вы можете использовать Titanium для преобразования его из пользовательского приложения в системное приложение.

Мэтью Рид
источник
Означает ли это, что системное приложение не может быть убито убийцами задач? или что они будут автоматически запускаться если убьют ??
Ashishsony
@ashishsony Системные службы обычно запускаются автоматически, да, но (большинство?) приложений / служб все еще можно убить. Например, я могу убить браузер на моем устройстве. (Вставьте обычный совет о том, как убийцы задач плохи.)
Мэтью Рид
Правильные системные приложения на устройствах HTC (даже таких, как Dropbox, Facebook) слишком глубоко интегрированы с интерфейсом Sense. Нужно воздерживаться от их удаления; преобразование пользовательских приложений в системные приложения также не следует выполнять, за исключением случаев, когда это очень необходимо, поскольку на некоторых ПЗУ они могут не завершаться при нехватке памяти.
Ашеш Кумар Сингх
1
@ Все одно программное отличие состоит в том, что системное (priv-app) приложение получает системную трансляцию, даже если force_stop из настроек приложения, когда несистемное приложение (user-app) не может принимать любую трансляцию, если это force_stop из настроек устройства.
Зала Джанаксин
23

Другие ответы верны, но не указывают на пару отличий:

права доступа

Системным приложениям предоставляется возможность запрашивать определенные системные разрешения, которые никогда не доступны для пользовательских приложений. Это не то же самое, что права root / sudo / su.

Один пример, который я знаю и использую ежедневно, - это возможность сброса счетчика уведомлений о пропущенных вызовах. У меня есть Go Dialer, который является заменой стандартного дозвона и контактного приложения (как вы делаете телефонные звонки). Когда я пропускаю звонок, android сообщает мне об этом с уведомлением. Однако Go Dialer не разрешено сбрасывать этот счетчик, даже если он запрашивает это разрешение при установке приложения. Android 2.2 и более ранние версии позволяли пользовательским приложениям сбросить настройки, но сделали это разрешение доступным только для системы, разрешение для Android 2.3

Переместив мое приложение Go Dialer в системный раздел, можно сбросить этот счетчик. Root не требуется для приложения (за исключением, конечно, фактического перемещения приложения в системный раздел).

Другое системное разрешение - возможность установить текущее местоположение GPS. Теперь у Android есть предпочтение, в котором вы можете разрешить фиктивные местоположения, поэтому любое приложение для подмены GPS может объявить местоположение GPS. Но если приложение находится в системном разделе, фиктивные местоположения могут быть отключены, в то же время позволяя приложению подделать местоположение GPS.

Обновления

Системные приложения могут быть обновлены так же, как пользовательские приложения, но обновление никогда не интегрируется в исходный диск. То есть системные приложения имеют уникальную возможность откатиться до версии, существовавшей при первой установке rom.

Переместить на SD

Android позволяет пользователям перемещать userприложения из внутренней памяти на SD-карту. Системные приложения не могут быть перемещены и всегда занимают некоторое внутреннее пространство. Большинство (всех?) Устройств, тем не менее, имеют внутренние пользовательские приложения в другом разделе, поэтому удаление системного приложения не даст вам больше места для пользовательского приложения (кроме удаляемого dalvik-кэша).

Вы освободите место, если удалите обновления для системного приложения. Как уже отмечалось, обновления не интегрированы с ROM и, таким образом, хранятся в пользовательском пространстве. Обновления также не могут перемещаться на SD-карту, но в случае удаления пространство пользователя восстанавливается.

Как это влияет на тебя

Если вы обычный пользователь Android, вы, скорее всего, не столкнетесь со сценариями, в которых система против пользовательского приложения будет иметь значение. Если вы опытный пользователь, у вас, скорее всего, есть пользователь root и вы можете изменить системное приложение на пользователя (и наоборот), если вы когда-нибудь столкнетесь с одной из этих ситуаций.

Стивен Шраугер
источник
1
Вы имели в виду "Это не то же самое, что права root / su"? Кажется, я помню, что это не одно sudoи suто же - по крайней мере, в Unix и Linux.
ChuongPham
Вы правы, что su и sudo отличаются в * nix. Но здесь sudoэто более применимо, потому что sudo запрашивает привилегии root, тогда suкак просто просит сменить пользователя. Чтобы использовать su, вам нужно знать только пароль учетной записи, на которую вы переключаетесь; если вы не указали учетную запись, то вы просите стать пользователем root. В Android, однако, нет пароля root и других учетных записей, поэтому suкоманда, известная пользователям, запускается в терминале для получения привилегий root.
Стивен Шраугер
Во всяком случае, я обновлю ответ, чтобы включить su, так как это то, что некоторые пользователи Android приравнивают к корню.
Стивен Шраугер
4

Системные приложения - это приложения, включенные в систему. Они находятся в папке / system / app.

Подавляющее большинство из них требуется, чтобы устройство работало. Примером некоторых из них является номеронабиратель, который устанавливает все сетевые подключения, и браузер, без которого не будут работать никакие веб-просмотры в приложении.

Лиам В
источник
1
Звонилка настраивает сетевое подключение?
Мэтью Читал
2
@ MatthewRead Да, это так! Фактическая «Звонилка» - это отдельная операция, расположенная в приложении для набора номера. Dialer.apk - это приложение, которое устанавливает соединение - если вы хотите подтверждение, заморозьте приложения для набора номера и хранилище номеронабирателя, сеть не будет работать.
Лиам W
Это довольно странно!
Мэтью Читал
Андроид странный!
Лиам W
3

Я хотел бы добавить что-то в ответах выше. Системные приложения не могут быть удалены при полном заводском сбросе, в отличие от пользовательских приложений. Поэтому, если вы хотите удалить все свои личные файлы, но их слишком много, чтобы их можно было удобно удалить, чтобы сброс к заводским настройкам был только наиболее удобным, и у вас есть приложения, которые вы хотите сохранить, вы можете преобразовать эти приложения в системные приложения, чтобы они не стирается во время сброса настроек.

CCCP
источник
1
Интересный совет! Я хочу перенести мою музыку в систему сейчас LOL
FreeSoftwareServers
2

Еще одна особенность системных приложений заключается в том, что они используют собственные библиотеки ( файлы libsomething.so ) из каталога общих системных библиотек (обычно это / system / lib или / system / lib64 ), а не из каталога частных приложений (например, / data). /app/com.example.HelloJni/lib/arm ). До Android Nougat пользовательские приложения могли свободно загружать и использовать системные библиотеки. Ограничения были введены позже, см. Https://developer.android.com/about/versions/nougat/android-7.0-changes.html#ndk .

Алекс Кон
источник