Когда я играл с разными ПЗУ и использовал Titanium Backup, я вижу, что приложения делятся на системные и пользовательские. Некоторые разработчики ПЗУ заявляют, что Titanium Backup следует использовать только для пользовательских, а не системных приложений, и когда я приступаю к удалению системных приложений, TiBu предупреждает меня, что ПЗУ может работать неправильно.
Помимо того факта, что пользовательские приложения можно загрузить через Маркет или каким-либо другим образом, в чем заключаются основные различия между ними?
Что такого особенного в системных приложениях, что делает их более неотъемлемой частью самой ОС?
/system
доступен только для чтения без рута, поэтому он предотвращает удаление приложений из /system/app
и /system/priv-app
. Критические приложения помещаются туда, чтобы их нельзя было удалить. Туда же помещается вредоносное ПО оператора связи, которое они не хотят позволять вам удалять. Последнюю категорию приложений можно удалить, если у вас есть root-права; прежний не очень.
/system/priv-app
также позволяет приложениям, установленным там, использовать signatureOrSystem
и другие привилегированные разрешения. В ответе Стивена есть несколько примеров.
Что касается того, почему приложения могут быть критическими, это зависит от ПЗУ. Насколько я слышал, например, HTC Sense сильно зависит от своих встроенных приложений. Они просто не разработали свой пользовательский интерфейс таким образом, чтобы он изначально работал со сторонними приложениями (или нормально работал, если системные приложения отсутствовали). Другие приложения по сути являются частью ОС Android, но Google закодировал их как приложения/службы (вероятно, из соображений инкапсуляции и надежности).
Обновления для некоторых системных приложений, таких как Google Maps, можно загрузить через Play Store. Если оно не было предустановлено в качестве системного приложения на вашем устройстве, вы можете использовать Titanium, чтобы преобразовать его из пользовательского приложения в системное.
Другие ответы верны, но не указывают пару отличий:
Системным приложениям предоставляется возможность запрашивать определенные системные разрешения, которые никогда не доступны для пользовательских приложений. Это не то же самое, что права root/sudo/su.
Один пример, который я знаю и использую ежедневно, — это возможность сбросить счетчик уведомлений о пропущенных вызовах. У меня есть Go Dialer, который является заменой стандартному номеронабирателю и контактному приложению (как вы звоните по телефону). Когда я пропускаю вызов, Android сообщает мне об этом уведомлением. Однако Go Dialer не может сбросить этот счетчик, даже если он запрашивает это разрешение при установке приложения. Android 2.2 и более ранние версии позволяли пользовательским приложениям сбрасывать его, но сделали это разрешение доступным только для системы для Android 2.3.
Переместив мое приложение Go Dialer в системный раздел, можно сбросить этот счетчик. Root для приложения не требуется (за исключением, конечно, фактического перемещения приложения в системный раздел).
Еще одним системным разрешением является возможность установить текущее местоположение GPS. Теперь у Android есть настройка, в которой вы можете разрешить фиктивные местоположения, поэтому любое установленное вами приложение для спуфинга GPS может объявить местоположение GPS. Но если приложение находится в системном разделе, фиктивные местоположения можно отключить, но при этом приложение сможет подделывать местоположение GPS.
Системные приложения можно обновлять так же, как и пользовательские приложения, но обновление никогда не интегрируется в исходный ПЗУ. То есть системные приложения имеют уникальную возможность откатиться к версии, существовавшей при первой установке рома.
Android позволяет пользователям перемещать user
приложения из внутренней памяти на SD-карту. Системные приложения не могут быть перемещены и всегда занимают некоторое внутреннее пространство. Однако большинство (все?) устройств имеют внутренние пользовательские приложения в другом разделе, поэтому удаление системного приложения не даст вам больше места для пользовательского приложения (кроме удаления dalvik-cache).
Вы освободите место, если удалите какие-либо обновления для системного приложения. Как уже отмечалось, обновления не интегрированы с ПЗУ и поэтому хранятся в пользовательском пространстве. Обновления также не могут перемещаться на SD-карту, но при удалении пользовательское пространство восстанавливается.
Если вы случайный пользователь Android, вы, скорее всего, не столкнетесь со сценариями, в которых система и пользовательское приложение будут иметь значение. Если вы являетесь опытным пользователем, у вас, вероятно, есть root и, таким образом, вы можете изменить системное приложение на пользователя (и наоборот), если вы когда-либо столкнетесь с одной из этих ситуаций.
sudo
и su
это не одно и то же - по крайней мере, в Unix и Linux.sudo
здесь это более применимо, потому что sudo запрашивает привилегии root, а su
просто просит переключить пользователя. Для того, чтобы использовать su, вам нужно знать только пароль учетной записи, на которую вы переходите; если вы не указываете учетную запись, вы просите стать пользователем root. Однако в Android нет ни пароля root, ни каких-либо других учетных записей, поэтому su
пользователям известна команда, которую нужно запустить в терминале для получения привилегий root.su
, так как это то, что некоторые пользователи Android приравнивают к root.Системные приложения — это приложения, которые включены в систему. Они находятся в папке /system/app.
Подавляющее большинство из них требуется для запуска устройства. Примером некоторых из них является номеронабиратель, который настраивает все сетевые подключения, и браузер, без которого веб-просмотры в приложении не будут работать.
Я хотел бы добавить кое-что к приведенным выше ответам. Системные приложения не могут быть удалены при полном сбросе настроек, в отличие от пользовательских приложений. Поэтому, если вы хотите удалить все свои личные файлы, но их слишком много, чтобы их можно было удобно удалить, поэтому сброс к заводским настройкам является наиболее удобным, и у вас есть приложения, которые вы хотите сохранить, вы можете преобразовать эти приложения в системные приложения, чтобы они выиграли не стирается во время сброса настроек.
Еще одна особенность системных приложений заключается в том, что они используют собственные библиотеки ( файлы 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 .
ашишсони
Мэтью Рид
Ашеш
Зала Джанакшин