Установка APK в / system / priv-app - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть рутированный TV Box с Android 7.1.2, который не поставлялся с приложением Files (com.android.documentsui), поэтому я не могу предоставить доступ для записи на внешние диски.

Я попытался выполнить следующие шаги для установки DocumentsUI.apk:

  • переместить DocumentsUI.apk в /system/priv-app/DocumentsUI/DocumentsUI.apk
  • chmod 744 /system/priv-app/DocumentsUI
  • chmod 644 /system/priv-app/DocumentsUI/DocumentsUI.apk
  • chown 0.0 /system/priv-app/DocumentsUI
  • chown 0.0 /system/priv-app/DocumentsUI/DocumentsUI.apk
  • chcon u:object_r:system_file:s0 /system/priv-app/DocumentsUI
  • chcon u:object_r:system_file:s0 /system/priv-app/DocumentsUI/DocumentsUI.apk
  • перезагрузка

Несмотря на это, когда я пытаюсь запустить приложение, оно всегда принудительно закрывается со следующим сообщением об ошибке в logcat: Neither user 10072 nor current process has android.permission.CACHE_CONTENT

Есть идеи, если я что-то упустил?

Обратите внимание, что я не на Android 8+, поэтому, насколько я знаю, мне не нужно добавлять XML на /system/etc/permissions.

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Только что нашел эту ветку на сайте Kodi, которая может помочь. https://forum.kodi.tv/showthread.php?tid=308040&page=2

Короткая версия: Поскольку у вас есть права root, найдите / data / system / packages.xml и / data / system / packages.list

Теперь вы должны найти имя вашего пакета в packages.list и затем отредактировать packages.xml

Найдите нужный раздел приложений (например, com.ghisler.android.TotalCommander),

locate its <perms> section and add the following line:
<item name="android.permission.WRITE_MEDIA_STORAGE" granted="true" flags="0" />

Посмотрите на нить Kodi, если что-то, что я пишу, неясно. Надеюсь, это поможет,

Крис.

0 голосов
/ 27 апреля 2018

CACHE_CONTENT разрешение имеет подпись уровня защиты:

<!-- @hide Allows an application to cache content.
     <p>Not for use by third-party applications.
     <p>Protection level: signature
-->
<permission android:name="android.permission.CACHE_CONTENT"
            android:protectionLevel="signature" />

Поместить ваше приложение в /system/priv-app недостаточно. Он также должен быть подписан тем же ключом, который использовался для подписи платформы (так как именно платформа Android определяет это разрешение).

AFAIK, здесь нет простого ответа. Вам необходимо интегрировать неподписанный APK в систему сборки Android как предварительно собранный (или, если у вас есть источник, как обычное приложение), и создать свой собственный дистрибутив Android и прошить его.

...