Как именно Android определяет, является ли приложение system application
с привилегиями root?Системное приложение в Android
Я знаю, что для таких приложений будет включен ApplicationInfo.FLAG_SYSTEM
, и эти приложения должны объявить общий идентификатор пользователя как "android.uid.system"
в своем файле Manifest
. Наряду с этим существуют другие критерии, в которых приложение, находящееся в /system/app
, также должно рассматриваться как системное приложение.
Я искал исходный код для PackageMangerService.java в AOSP, где я заметил, что если общий идентификатор пользователя равен android.uid.system
, то приложению присваивается флаг FLAG_SYSTEM
.
Но я думаю, что приложения, которые доступны в /system/app
не содержат общий идентификатор пользователя, как android.uid.system
то как они получают этот флаг FLAG_SYSTEM
включен для них?
Системные приложения не имеют «корневой привилегией».Корневой доступ и установка на раздел '/ system' не связаны. – CommonsWare
@CommonsWare В этом случае я действительно запутался между ними и хочу получить полную информацию обо всех этих двух. Каковы особенности/особенности каждого и как преобразовать определенное приложение в системное приложение и/или предоставить ему доступ root? Не могли бы вы прояснить мои сомнения или, по крайней мере, перенаправить меня? – darthvading
@ darthvading Приложения не будут иметь привилегии root. Если устройство было внедрено, приложение может вызвать su, если оно установлено, для выполнения действий с правами root, но эти приложения работают как стандартные пользователи. * system * - специальный пользователь, определенный в android, чтобы иметь дополнительные привилегии. http://androidxref.com/5.1.0_r1/xref/system/core/include/private/android_filesystem_config.h#36 описывает сопоставление для специальных пользователей. Если это заводское устройство без root, вы не сможете установить приложение в качестве пользователя системы. – odexcide