Ejecución de scripts de Groovy incrustados en Java en tiempo de ejecución para Android

A partir de la versión 2.4, Groovy soporta Android. Quiero ejecutar un script de Groovy incrustado en Java en mi aplicación de Android.

Este sitio web explica que esto es posible: http://melix.github.io/blog/2014/06/grooid2.html

Una de las dificultades para adaptar el lenguaje Groovy es que, como dijimos, Groovy es un lenguaje muy dinámico. Una de sus capacidades es ejecutar scripts en tiempo de ejecución. Entonces, ¿qué pasa si queremos escribir un script de Groovy en el dispositivo y ejecutarlo directamente en él? ¿Es posible? De hecho, sí, es posible, dado que usted sigue este proceso:

Puede tener una aplicación, escrita en Groovy o no, pero al final, una vez que la aplicación se está ejecutando, tiene el código fuente de Groovy que desea ejecutar. Entonces necesita compilar las clases, llamar al dex directamente en el dispositivo, empaquetar el resultado en un archivo jar en el sistema de archivos local y luego cargarlo usando un cargador de clases especial. Así que por qué esto es posible, el proceso es muy complejo, no sencillo, pero lo más importante, es dramáticamente lento.

Estoy emocionado de que esto es posible, independientemente de la velocidad. Hay un proyecto de ejemplo aquí: https://github.com/melix/grooidshell-example .

Desafortunadamente no entiendo realmente el proceso. Tengo el proyecto, que es bastante pequeño, pero no estoy seguro de dónde mirar exactamente.

¿Puedes apuntarme en la dirección correcta para ejecutar secuencias de comandos de Groovy incrustadas en Java en tiempo de ejecución para Android?

Mire más de cerca en https://github.com/melix/grooidshell-example/blob/master/GroovyDroid/src/main/java/me/champeau/groovydroid/GrooidShell.java

Esto es crear una instancia de DexFile (línea 71), añadir un procesador de bytecode post a la compilación (línea 73) para tomar los bytes generados de las clases y traducirlo al formato dex (línea 76) y finalmente almacenarlo en la instancia dexfile 77). A continuación, obtenga el bytecode dalvik (línea 91), utilice un DexClasLoader (línea 136) para cargar las clases dalvik / dex (línea 138).

  • Java y la metodología de prueba de Android
  • No se puede usar el libro de recuerdos de Eclipse dentro de un proyecto de Android
  • Android NDK tutorial / guía para principiantes.
  • ¿Cómo puedo contar el número de archivos con una extensión específica en Android?
  • Cómo hacer animación de traducción para cada elemento de vista de lista
  • El texto personalizado de TextView no muestra texto pero sólo muestra el fondo
  • No se puede iniciar la actividad ComponentInfo {com.example.countryselect / com.example.countryselect.OfferSelect}
  • Cómo tener varias instancias de Servicio en Android
  • Apache Commons NET: ¿Debo crear un nuevo objeto FTPClient en cada conexión o reutilizar uno?
  • Ejecutar SpeechRecognizer durante la llamada
  • E.printStackTrace (); En cuerda
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.