Я пытаюсь установить системное приложение из своего java-кода, и до сих пор я не имел никакого успеха.
Ниже то, что я сделал до сих пор:Android: программное копирование apk в/system/app
- Мое устройство укоренено.
- Приложение "installer" установлено как системное приложение. (скопировал его вручную в/system/app)
- Я подписал инсталлятор apk с ключом платформы, и у меня есть
android:sharedUserId="android.uid.system"
в манифесте. Я пытался (и пытался, а затем еще) для
Runtime.getRuntime.exec("su")
. Я намерен установить системный раздел какrw
, сделатьcat
для apk, а затем сделать системный разделro
. Ниже приведен список команд:mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system<br> cat /sdcard/application.apk > /system/app/application.apk<br> mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system<br><br>The application.apk here is the app being installed from the installer app. This app is also signed with platform key, and has the sharedUserId configured.
- Я запросил разрешение
INSTALL_PACKAGES
в манифесте.
Я пробовал несколько вариантов формата exec (""), включая использование 'su -c'
с каждой командой. Я получил исключение Broken Pipe и исключение безопасности. Иногда я не получаю исключения, но файл не копируется.
Пожалуйста, дайте мне знать, что мне не хватает здесь. Кто-нибудь получил эту работу?
Спасибо!
относительно заметки, в чем разница между приложением, подписанным с ключом платформы, и с sharedUserId = system; и приложение, присутствующее в/system/app? – Chaitanya
Приложения в/system/app имеют доступ к уровням разрешений 2 (не 1, насколько я знаю). Независимо от разрешений *, предоставленных *, приложения с sharedUserId системы наследуют разрешения, предоставляемые «родительскому» приложению, и, кроме того, выполняются в одном и том же идентификаторе процесса, что и «родительский». Различные API проверяют идентификатор процесса приложения и запрещают доступ к ним, если они не имеют определенного типа. Хотя они в основном тесно связаны друг с другом, они не всегда * идут рука об руку.Это нетехнический способ описать его, я уверен, что другие люди сделают лучшую работу ... – slinden77