2015-05-29 2 views
0

Как именно 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 включен для них?

+1

Системные приложения не имеют «корневой привилегией».Корневой доступ и установка на раздел '/ system' не связаны. – CommonsWare

+0

@CommonsWare В этом случае я действительно запутался между ними и хочу получить полную информацию обо всех этих двух. Каковы особенности/особенности каждого и как преобразовать определенное приложение в системное приложение и/или предоставить ему доступ root? Не могли бы вы прояснить мои сомнения или, по крайней мере, перенаправить меня? – darthvading

+0

@ 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

ответ

1

если приложение является «системное приложение» с корневой привилегией

Он должен быть подписан с правом, сертификат системы.

0

Приложение в Android устройств может быть систем приложений или приложений пользователя, это только на основе их места установки.

  • приложение пользователя помещается в /data перегородке вашего телефона, который является частью внутренней памяти доступны для пользовательских данных и приложений.
  • Системные приложения - это те, которые установлены в разделе /system.

Wow ... это все? Большой! Звук легко ... как я могу это сделать?

Может показаться легким, но это не так, то вам нужно:

  • корень ваш телефон
  • Добавить действительный ПОДПИСАЛИ безопасного CERT
  • давать разрешения
  • И еще головные боли .. .

Но не исключено, check this tutorial.

0

Ага, я раньше читал код в PackageManagerService.java. У этого есть наблюдатель, чтобы проверить, изменились ли какие-либо файлы в каталоге /system/priv-app/. И он установит приложение, если есть новый файл apk. Тогда система установит pkgFlags с ApplicationInfo.FLAG_PRIVILEGED

следующее код в PackageManagerService в Android 5.0:

private PackageParser.Package scanPackageLI(File scanFile, int parseFlags, int scanFlags, 
     long currentTime, UserHandle user) { 
    .... 
    if (locationIsPrivileged(scanFile)) { 
     updatedPkg.pkgFlags |= ApplicationInfo.FLAG_PRIVILEGED; 
    } 
    .... 
} 
Смежные вопросы