Отмена system.img на устройстве

Я работаю над автоматическим решением для обновления приложений для устройств (LG p509 - Optimus 1), которые мы используем для наших клиентов. Мы контролируем эти устройства и в настоящее время устанавливаем на них настраиваемое ядро ​​(но не полный пользовательский ПЗУ). Поскольку мы пытаемся сделать автоматическое обновление нашего приложения на устройстве, нам необходимо, чтобы система была подписана ключом, который мы контролируем, чтобы мы могли подписывать наши приложения с тем же ключом (чтобы получить разрешение INSTALL_PACKAGES).
У меня возникло несколько проблем с созданием AOSP на устройстве (с использованием источника, выпущенного LG для устройства), и я пытаюсь сделать шаг назад и оценить наши варианты. У меня есть несколько вопросов:

  • Можно ли просто вытащить system.img с телефона и уйти в отставку? Если да, то где находится система apk? Я ткнул через источник PackageManager, и он использует системный пакет (по-видимому, называемый "андроид" ) для сравнения приложений с тем, разрешено ли им иметь системные разрешения.
  • Кто-нибудь здесь создал пользовательский ПЗУ для устройства, которое могло бы предложить некоторые советы о том, как просто получить нашу подпись подсистемой?

Любое понимание будет оценено.

Ответы

Ответ 1

Хорошо, поэтому мы поняли это. Я не буду вдаваться в подробности (слишком много написания), но вот основной смысл для всех, кто натыкается на это:

Если вы хотите изменить ключ, с которым подписана система, вам необходимо выполнить следующие шаги:

  • Извлечь /system/ dir из работающего телефона
  • Осмотрите файлы .apk (от /system/app и /system/framework), чтобы выяснить, какие из них подписаны тем же ключом, что и framework-res.apk. Я использовал модифицированную версию script связанную здесь, чтобы выяснить, какие APK подписать.
  • Если APK в /system/app, которые разделяют ключ подписи с framework-res.apk, одексерованы, вам нужно удалить их odex.
  • отмените APK и framework-res.apk и упакуйте их в update.zip (как это сделать Google).

На моем конкретном устройстве мне пришлось смириться с /system/framework/framework-res.apk и /system/framework/lge-res.apk с /system/framework, а также пришлось де-odex и подписать 20 .apks из папки /system/app, чтобы все работало бесперебойно.

Ответ 2

"system apk" /system/framework/framework.jar. Я никогда не пытался переписать образ системы, но я написал код, который был частью образа системы (не в рамках обычного проекта apk), и он стал частью этой банки. В этом каталоге есть дополнительные банки, которые, возможно, также нужно будет переписать.

Подпись создается случайным образом и помещается в два файла в вашей среде сборки build/target/product/security/platform.pk8 и build/target/product/security/platform.x509.pem. Я не знаю, как их извлечь из обычного хранилища ключей, однако я смог скопировать их из одной сборки прошивки в другую, чтобы гарантировать, что оба изображения имеют один и тот же ключ платформы. Кроме того, я смог изменить подпись APK с помощью этой команды: java -jar signapk.jar platform.x509.pem platform.pk8 Old.apk New.apk. Вы найдете signapk.jar в своей сборке, out/host/linux-x86/framework/signapk.jar