Android: программно копирую apk в /system/app

Я пытаюсь установить системное приложение из своего java-кода, но пока безуспешно.

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

  1. Мое устройство рутировано.
  2. Мое приложение-установщик установлено как системное приложение. (скопировал вручную в /system/app)
  3. Я подписал apk установщика ключом платформы, и у меня есть android:sharedUserId="android.uid.system"в манифесте.
  4. Я пытался (и пытался, а затем еще немного) для Runtime.getRuntime.exec("su"). Я намерен смонтировать системный раздел как rw, выполнить catдля apk, а затем создать системный раздел ro. Ниже приведен список команд:

    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system
    кошка /sdcard/application.apk > /system/app/application.apk
    mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system

    Здесь application.apk — это приложение, устанавливаемое из приложения-установщика. Это приложение также подписано ключом платформы и имеет настроенный идентификатор sharedUserId.
  5. Я запросил разрешение INSTALL_PACKAGESв манифесте.

Я испробовал несколько вариантов формата exec(""), включая использование 'su -c'с каждой командой. Я получил исключение Broken Pipe и исключение безопасности. Иногда я не получаю исключения, но файл не копируется.


Пожалуйста, дайте мне знать, что мне здесь не хватает. У кого-нибудь это работает?

Спасибо!

7
задан Raghav Sood 8 April 2013 в 18:56
поделиться