¿Qué es Smali Code Android?

Voy a aprender un poco sobre Dalvik VM, dex y Smali.

He leído sobre smali, pero todavía no puede entender claramente dónde está su lugar en la cadena de compiladores. Y cuál es su propósito.
Aquí algunas preguntas:

  1. Como ya sé, dalvik como otras máquinas virtuales ejecutar bytecode, en caso de Android es dex byte código.
  2. ¿Qué es smali? ¿El sistema operativo Android o Dalvik Vm funciona directamente con él, o es exactamente el mismo bytecode dex pero más legible para el humano?
  3. ¿Es algo así como disasembler para Windows (como OllyDbg) ejecutable de programa consisten en diferentes máquinas de código (D3, 5F por ejemplo) y hay un comando de montaje adecuado para cada código de máquina, pero Dalvik Vm también es software, por lo que smali es legible representación de bytecodes
  4. Hay un nuevo ambiente ART. ¿Sigue utilizando bytecodes o ejecuta directamente código nativo?

Gracias de antemano.

    Cuando crea un código de aplicación, el archivo apk contiene un archivo .dex, que contiene bytecode binario de Dalvik. Este es el formato que la plataforma realmente entiende. Sin embargo, no es fácil de leer o modificar el código binario, por lo que hay herramientas por ahí para convertir a y desde una representación legible por humanos. El formato legible humano más común se conoce como Smali. Esto es esencialmente el mismo que el disimulador que usted mencionó.

    Por ejemplo, digamos que tiene código Java que hace algo como

    int x = 42 

    Suponiendo que esta es la primera variable, entonces el código dex para el método muy probablemente contendrá la secuencia hexadecimal

     13 00 2A 00 

    Si ejecuta baksmali en él, obtendría un archivo de texto que contenía la línea

     const/16 v0, 42 

    Cuál es obviamente mucho más legible entonces el código binario. Pero la plataforma no sabe nada acerca de smali, es sólo una herramienta para hacer más fácil trabajar con el bytecode.

    Dalvik y ART toman archivos .dex que contienen bytecode dalvik. Es completamente transparente para el desarrollador de aplicaciones, la única diferencia es lo que sucede tras bambalinas cuando la aplicación se instala y se ejecuta.

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