5 votos

¿Cómo se ejecuta el sistema Android con tarros de Java?

Hay una gran cantidad de frascos de Java en /system/framework por ejemplo, am.jar . Entiendo que Android utiliza Java de una manera muy confusa (al menos para mí). No entiendo completamente la forma en que funciona dalvik.

Básicamente, no entiendo cómo Android ejecuta estos frascos. ¿Puede alguien explicar cómo lo hace, y posiblemente cómo puedo ejecutar mis propios frascos? Estoy en Resurrection Remix, 6.0.1, con Xposed framework, si ayuda.

Gracias

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í?

3voto

iheggie Puntos 131

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.

1voto

Xetius Puntos 10445

Esa es una pregunta bastante grande; es un sistema muy complicado y grande. Si no puedes acotar más tu pregunta, la respuesta corta está en los docs de Android:

la Dalvik VM es una máquina virtual sólo para intérpretes que ejecuta archivos en el formato Dalvik Executable (.dex)

Similar a la JVM de Java, pero una implementación diferente optimizada para los patrones de uso de Android.

Ver también ¿Qué es Dalvik y dalvik-cache? que lo describe un poco más.

Si no, le sugiero que lea Documentación de Google sobre el tema para encontrar más información sobre cualquier parte del sistema dalvik que te interese. (Si intentáramos responder a todo aquí, haría falta un desplazamiento de página casi infinito (exagerando un poco) para describir todas las diferentes partes y piezas de cómo y por qué funciona.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X