приложение, установленное в /system/priv-app, не запускается

Предпосылки :

  • китайский планшет на базе Rockchip с root-правами под управлением Android 6, исправленный для отключения SystemUI

  • приложение собственной разработки, объявляющее категорию LAUNCHER и предназначенное для полного управления устройством

Чего я пытаюсь достичь:

установите приложение как системное приложение, чтобы избежать обработки разрешений SDK 23+

Что я сделал до сих пор:

  • регулярно устанавливал приложение через Android Studio
  • переместил приложение в /system/priv-app:

(корень)

ls /data/app/my.package.name-1
 base.apk
 lib
 oat
mount -o rw,remount /system
mv /data/app/my.package.name-1 /system/priv-app/AppName
ls -la /system/priv-app/AppName
 -rw-r--r-- system   system    2464934 2017-12-08 11:32 base.apk
 drwxr-xr-x system   system            2017-12-08 11:32 lib
 drwxrwx--x system   install           2017-12-08 11:32 oat
reboot

В чем проблема?

Похоже, система не знает, что приложение существует: оно не запускается при загрузке (что отлично работает при установке как обычное приложение), и я не могу запустить его вручную:

root@rk312x:/ # am start -n my.package.name/.ui.MainActivity
Starting: Intent { cmp=my.package.name/.ui.MainActivity }
Error type 3
Error: Activity class {my.package.name/my.package.name.ui.MainActivity} does not exist.

Что мне не хватает?

спасибо, это решило проблему с запуском приложения. Разрешения по-прежнему не предоставляются автоматически, я думаю, из-за несистемной подписи. Однако вопрос был о запуске приложения, поэтому, пожалуйста, оставьте свои комментарии в качестве ответа.
Вы пытаетесь получить разрешения во время выполнения автоматически? Нахождение в этом каталоге не предоставит его автоматически. Вы должны быть внесены в белый список менеджером пакетов, подписанным Google. Вы можете просто настроить API 22 или ниже, и вы получите любые разрешения, которые хотите, просто установив APK.

Ответы (2)

Изменение разрешений -rw-r--r--и владельца с rootпоследующей перезагрузкой должно исправить

Но, как указал ОП, необходимо решить проблемы с подписью.

Перемещение приложения из одного места в другое на Marshmallow и выше почти всегда приводит к этому. Лучше всего использовать cpкоманду, после чего удалить источник. Приложение в данных имеет свои собственные установленные разрешения, которые сохраняются в системе, и даже если вы измените их, поскольку нет нового экземпляра создания файла, система просто не позаботится о том, чтобы инициировать подготовку приложения. Лучший способ

cp /data/app/[package.name]-1/app-name.apk /system/app/[app-folder-name]/app-name.apk

Повторите это для библиотек в папке приложения в папку приложения. Папка должна выглядеть так:

APPNAME, содержащая .apk и папку LIB Папка LIB, содержащая тип библиотеки, например, папку ARM Папка ARM со всеми библиотеками, например, libexample.so

установить разрешение для всех папок chmod 0755и для всех файловchmod 0644

Они будут работать. Чтобы облегчить жизнь, перестаньте использовать команды оболочки. Ищите файловый менеджер, чтобы упростить вашу работу, но всегда помните, что вы используете TWRP или терминал на загрузочном устройстве, всегда копируйте и удаляйте источник. Переход на многие ПЗУ на самом деле приведет к этому

ПРИМЕЧАНИЕ. Папка овса в этой папке по адресу /data/app/package.name/ бесполезна. Dalvik создаст новый class.dex в /data/dalvik-cache при установке в качестве системного приложения.