¿Cómo instalo un apk como aplicación del sistema?

Estoy intentando instalar una aplicación en la carpeta system/app de un dispositivo. Debe hacerse ya que estoy escribiendo un programa QAT y las pruebas deben ejecutarse con algunos privilegios que no están disponibles para aplicaciones de terceros.

Ya tengo la clave de firma del firmware del dispositivo y necesito configurar el ID de usuario compartido de la aplicación en android.uid.system. Sin embargo, me sigue dando un mensaje de error "INSTALL_FAILED_SHARED_USER_INCOMPATIBLE".

¿Alguna idea sobre cómo puedo solucionar esto?

¿Qué es exactamente lo que te está dando ese mensaje de error? Agregue los pasos que está tomando.
Es el administrador de paquetes. Una posible causa es que estoy generando el certificado yo mismo con keytool y se proporcionan los detalles relevantes, sin embargo, las aplicaciones del sistema parecen haber sido firmadas con un certificado con una validez diferente a la mía, ya que se creó en una fecha anterior. ¿Podría ser este el problema al que me enfrento?

Respuestas (3)

Si no tiene root para seguir el procedimiento de instalación manual que describe Demizey, entonces la aplicación debe estar firmada con la misma clave con la que está firmada la ROM; es decir, la misma clave con la que se firman las aplicaciones existentes del sistema. Esta es una precaución de seguridad: de lo contrario, cualquiera podría escribir una aplicación que se ejecutaría con acceso completo al sistema en cualquier dispositivo.

Encontré estas instrucciones para instalar PowerManagerPro en /system/app, solo las modifiqué un poco. (Nota: primero instale la aplicación en /data/app, como lo haría con cualquier aplicación, y necesita un dispositivo rooteado).

Abra una aplicación Terminal Emulator y ejecute el siguiente comando para copiar la aplicación a la tarjeta SD:

su
cp /data/app/ su.apk /sdcard/ su.apk

Si no puede encontrar la aplicación en /data/appprobar /data/apps-private/. Luego, desinstale su aplicación del dispositivo.

Ejecute los siguientes comandos en el emulador de terminal para volver a montar el /systemdirectorio como lectura/escritura e instalar la aplicación en el /system/appdirectorio:

su
montar -o volver a montar,rw -t yaffs2 /dev/block/mtdblock3 /sistema
cp /sdcard/ su.apk /sistema/aplicación

Si prefiere usar adb desde su computadora, ejecute estos comandos:

volver a montar adb
adb shell cp /sdcard/ your.apk /system/app
@Demizide: Ya lo probé. Tengo dos problemas, primero, el dispositivo no está rooteado y no lo va a estar. En segundo lugar, los archivos en /system/app son propiedad de root y el grupo también es root. De alguna manera no me permite configurar el grupo como root y lo mantiene como shell. Es por esto, o por alguna otra razón, el método anterior no parece funcionar.

Es posible que desee aprovechar la vulnerabilidad de la clave maestra .

Elija una aplicación que, si la pierde o la reemplaza, no afectará su uso del dispositivo. Tome su APK y encuentre una manera de modificar su contenido e inserte los archivos de su aplicación. No sobrescriba nada en el APK original, pero intente hacer 2 entradas del mismo archivo en el encabezado ZIP. Luego puedes instalar el APK modificado sobre el original. Heredará los permisos del original, pero funcionará como usted pretende.