Puedes ejecutar los archivos Jar utilizando app_process, que sustituye al ejecutable java en Android. Mirando a /system/bin/am por ejemplo, vemos que realmente se está ejecutando
exec app_process $base/bin com.android.commands.am.Am "$@"
Has mencionado que se ejecuta Xposed. Si buscas en Google la instalación manual de este framework, verás que despliega un jar en /system/frameworks y sustituye app_process por uno modificado, donde se añaden los hooks. También es instructivo leer el código app_process modificado .
Tenga en cuenta que puede necesitar esta respuesta para ejecutar sus aplicaciones.
Por último, ten en cuenta que parece que no has entendido el enlace a la respuesta de stackoverflow en los comentarios ( https://stackoverflow.com/q/30656933/2291 ). Las jarras son instalado. En los sistemas más nuevos, se convierten (y se eliminan los archivos del tarro) en ART y se ejecutan como código nativo (es decir, lenguaje de máquina). En sistemas más antiguos, creo que los archivos de clase java se convierten a bytecode Dex y se ejecutan en la VM Dalvik. Eso significa que el bytecode Dex se ejecuta en Dalvik de la misma manera que el bytecode Java es ejecutado por la VM Java sobre la marcha. En cualquier caso, los archivos JAR siempre contienen código inicialmente.
0 votos
¿Qué pretende conseguir ejecutando sus propios JARs? ¿Nuevas aplicaciones, cambiar el comportamiento del sistema operativo, etc.?
0 votos
@Mufasa Sólo quiero saber cómo los ejecuta. No quiero ejecutar el mío propio. (Al menos por ahora)
0 votos
@Mufasa Sé que esto es un poco viejo ahora, pero si sólo se ejecuta
.dex
'es, entonces qué son esos.jar
¿para qué está ahí?0 votos
No estoy totalmente seguro, pero creo que tienen que ver con el proceso de arranque, cosas del núcleo del framework, y posiblemente por razones de compatibilidad. Después de todo, los JARs son sólo archivos ZIP con una determinada estructura de directorios en ellos - no tiene por qué ser el uso de ellos estrictamente para el código ejecutable. La idea general es que Android no suele ejecutar JARs en el espacio de usuario durante el funcionamiento normal. Vea también stackoverflow.com/q/30656933/2291 en el que se habla de cómo la mayoría de esos JARs tienen metadatos simples en ellos.
0 votos
.jar
son la librería de clases estándar de Android que es cargada por las VMs Dalvik/ART al igual que la JVM en los PCs carga JCL desde diferentes.jar
/.jmod
archivos. La variable de entorno BOOTCLASSPATH define una lista de todos estos archivos.jar
archivos. Como.apk
archivos,.jar
también son archivos ZIP y contienen unclasses.dex
que es interpretado o compilado JIT (como lo hacía Dalvik) o compilado AOT para.odex
o.oat
archivos (como hace ART). Todas las aplicaciones construidas con el SDK de Android dependen de esta biblioteca de clases estándar.