Отставка system.img на устройстве
Я работаю над решением для автоматического обновления приложений для устройств (LG p509 - Optimus 1), которое мы внедряем для наших клиентов. Мы контролируем эти устройства и в настоящее время устанавливаем на них собственное ядро (но не полностью настраиваемое ПЗУ). Поскольку мы пытаемся выполнить автоматическое обновление нашего приложения на устройстве, нам нужно, чтобы система была подписана ключом, который мы контролируем, чтобы мы могли подписывать наши приложения тем же ключом (чтобы получить разрешение INSTALL_PACKAGES).
У меня возникли некоторые проблемы с запуском сборок AOSP на устройстве (с использованием выпущенного компанией LG исходного кода для устройства), и я пытаюсь сделать шаг назад и оценить наши варианты. У меня есть несколько вопросов:
- Можно ли просто снять system.img с телефона и оставить содержимое? Если да, где находится системный apk? Я перелистывал источник PackageManager, и он использует системный пакет (вроде бы называемый "android") для сравнения приложений, чтобы узнать, разрешено ли им иметь системные разрешения.
- Кто-нибудь здесь создавал собственное ПЗУ для устройства, которое могло бы дать совет, как просто получить нашу подпись как системную подпись?
Любое понимание будет оценено.
2 ответа
Итак, мы поняли это. Я не буду вдаваться в подробности (слишком много написания), но вот основная суть для любого, кто натыкается на это:
Если вы хотите изменить ключ, с которым система подписана, вам необходимо выполнить следующие шаги:
- экстракт
/system/
реж из бегущего телефона - Осмотреть
.apk
файлы (из/system/app
а также/system/framework
) выяснить, какие из них подписаны тем же ключом, что иframework-res.apk
, Я использовал измененную версию скрипта, на которую ссылаемся здесь, чтобы выяснить, какие APK нужно подписать. - Если APK в
/system/app
которые разделяют ключ подписи сframework-res.apk
odexed, вам нужно деодексировать их. - подать в отставку АПК и тому
framework-res.apk
и упаковать их вupdate.zip
(Google, как это сделать).
На моем конкретном устройстве я должен был уйти в отставку как /system/framework/framework-res.apk
а также /system/framework/lge-res.apk
от /system/framework
а также пришлось деодексировать и подписать 20 .apks
от /system/app
папка, чтобы все работало гладко.
"Системный апк" /system/framework/framework.jar
, Я никогда не пытался заново подписать образ системы, но я написал код, который был частью образа системы (не в рамках обычного проекта apk), и он стал частью этого фляги. В этом каталоге есть дополнительные jar-файлы, которые также могут потребовать повторной подписи.
Подпись создается случайным образом и помещается в два файла в вашей среде сборки, 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