Renuncia a system.img en un dispositivo

Estoy trabajando en una solución automática de actualización de aplicaciones para dispositivos (LG p509 – Optimus 1) que implementamos para nuestros clientes. Tenemos el control de estos dispositivos y actualmente instalamos un kernel personalizado en ellos (pero no una ROM personalizada completa). Dado que estamos tratando de hacer la actualización automática de nuestra aplicación en el dispositivo, necesitamos que el sistema esté firmado por una clave que controlamos para poder firmar nuestras aplicaciones con la misma clave (para obtener el permiso INSTALL_PACKAGES).
He estado teniendo algunos problemas ejecutando las compilaciones de AOSP en el dispositivo (usando la fuente liberada de LG para el dispositivo), y estoy tratando de dar un paso atrás y evaluar nuestras opciones. Tengo algunas preguntas:

  1. ¿Es viable sacar el system.img del teléfono y renunciar al contenido? Si es así, ¿dónde está ubicado el sistema apk? He explorado la fuente de PackageManager y usa un paquete de sistema (aparentemente llamado "android") para comparar aplicaciones con para ver si se les permite tener permisos de sistema.
  2. ¿Alguien ha creado aquí una ROM personalizada para el dispositivo que podría ofrecer algunos consejos sobre cómo acaba de obtener nuestra firma sea la firma del sistema?

Cualquier idea sería apreciada.

2 Solutions collect form web for “Renuncia a system.img en un dispositivo”

Ok, así que nos dimos cuenta. No voy a entrar en los detalles completos (demasiada escritura), pero aquí está la esencia esencial para cualquier persona que tropiece en esto:

Si desea cambiar la clave con la que está firmado el sistema, debe realizar los siguientes pasos:

  • Extraer /system/ dir del teléfono en ejecución
  • Inspeccione los archivos .apk (de /system/app y /system/framework ) para determinar cuáles están firmados por la misma clave que el framework-res.apk . He utilizado una versión modificada del script vinculado aquí para averiguar qué APKs para firmar.
  • Si los APKs en /system/app que comparten la clave de firma con framework-res.apk son odexed, es necesario des-odexarlos .
  • Renunciar a los APK y el framework-res.apk y empaquetarlos en un update.zip (google cómo hacer eso).

En mi dispositivo específico tuve que renunciar a /system/framework/framework-res.apk y /system/framework/lge-res.apk de /system/framework y también tenía que de-odex y firmar 20 .apks desde /system/app carpeta de la /system/app con el fin de que todo funcione sin problemas.

El "sistema apk" es /system/framework/framework.jar . Nunca he intentado volver a firmar la imagen del sistema pero he escrito el código que era parte de la imagen del sistema (no dentro de un proyecto normal de apk) y se convirtió en parte de este tarro. Hay jarras adicionales en este directorio que puede ser necesario volver a firmar también.

La firma se crea aleatoriamente y se coloca en dos archivos en su entorno de compilación, build/target/product/security/platform.pk8 y build/target/product/security/platform.x509.pem . No sé cómo extraer estos de un almacén de la llave normal, sin embargo he podido copiarlos de una versión del firmware a otra para asegurar que ambas imágenes tenían la misma llave de la plataforma. Además, he podido cambiar la firma de APKs con este comando: java -jar signapk.jar platform.x509.pem platform.pk8 Old.apk New.apk . Usted encontrará signapk.jar en su compilación, en out/host/linux-x86/framework/signapk.jar

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.