Estoy tratando de instalar una aplicación del sistema desde mi código java, y hasta ahora, no he tenido ningún éxito.
que sigue es lo que he hecho hasta ahora:Android: copiar programáticamente apk a/system/app
- El dispositivo tiene sus raíces.
- Mi aplicación "instalador" está instalada como una aplicación del sistema. (lo copió manualmente a/system/app)
- He firmado el apk del instalador con la clave de la plataforma, y tengo
android:sharedUserId="android.uid.system"
en el Manifiesto. He estado intentando (e intentando, y luego algo más) para
Runtime.getRuntime.exec("su")
. Tengo la intención de montar la partición del sistema comorw
, hacer uncat
para la apk, y luego hacer la partición del sistemaro
. A continuación se muestra la lista de comandos:mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system<br> cat /sdcard/application.apk > /system/app/application.apk<br> mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system<br><br>The application.apk here is the app being installed from the installer app. This app is also signed with platform key, and has the sharedUserId configured.
- He solicitado el permiso
INSTALL_PACKAGES
en el manifiesto.
me han tratado una serie de variaciones del formato (""), incluyendo el uso de exec 'su -c'
con cada comando. Obtuve la excepción de Broken Pipe y la excepción de seguridad. A veces, no obtengo una excepción, pero el archivo no se copia.
Hágame saber lo que me falta aquí. ¿Alguien ha conseguido esto funcionando?
Gracias!
en una nota relacionada, ¿cuál es la diferencia entre una aplicación firmada con la clave de la plataforma y que tiene sharedUserId = system; y una aplicación presente en/system/app? Las aplicaciones – Chaitanya
en/system/app tienen acceso a permisos de nivel 2 (no 1 hasta donde yo sé). Independientemente de los permisos * otorgados *, las aplicaciones con un sharedUserId del sistema heredan los permisos otorgados a la aplicación "principal" y además se ejecutan en el mismo ID de proceso ya que es "principal". Varias API comprueban el ID de proceso de la aplicación y les niegan el acceso si no son de un tipo específico. Aunque los 2 están mayormente vinculados, no * siempre * van de la mano.Esta es la forma no tecnológica de describirlo, estoy seguro de que otras personas harían un mejor trabajo ... – slinden77