Установка APK в /system/priv-app
У меня есть рутированный 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
,
1 ответ
Просто нашел эту ветку на сайте Kodi, которая может помочь. https://forum.kodi.tv/showthread.php?tid=308040&page=2
Краткая версия: так как вы рутированы, найдите /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, если что-то, что я напечатал, неясно. Надеюсь это поможет,
Крис.
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 и прошить его.