Отмена 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