Incorporación de v8 en la aplicación de Android

Quiero añadir un poco de soporte de secuencias de comandos a mi aplicación de Android. Mi aplicación no está basada en web, es sólo una aplicación común, escrita en Java.

Necesito elegir el lenguaje de scripting y su implementación de intérprete para incrustar. En cuanto a la lengua prefiero JavaScript (o mejor decir ECMAScript) porque no tiene ningún material incorporado para interactuar con el usuario (me refiero a la impresión smth y así sucesivamente), eso es justo lo que necesito (sólo quiero añadir un Un par de funciones y / o objetos para interactuar con algunos de la lógica de mi aplicación). Y otra razón es que tengo muy poca experiencia con Python y no tengo nada con Ruby, Lua y otros, y en la medida de lo que puedo preocupar más gente está familiarizada con JavaScript.

Se espera que los scripts de usuario en mi aplicación sean realmente pequeños y que se ejecuten no demasiado a menudo, por eso no importa la velocidad del motor de secuencias de comandos. El criterio principal que importa es el tamaño binario del apk, implícito por el motor del intérprete. Debe ser lo más pequeño posible. Idealmente alrededor de un par de docenas de kilos, y no más de 150-200Kb en cualquier caso (después de ProGuard, por supuesto). No necesito soporte de idioma completo, por ejemplo, estaré absolutamente feliz sin regexps. Otra cosa importante es el consumo de memoria del motor (pero es mucho menos importante, entonces el tamaño binario).

Sé que (de https://stackoverflow.com/a/11973689/52607 y el uso del motor V8 JavaScript para ejecutar JS lib sin webview ) que los dispositivos modernos de Android ya tienen motor de JavaScript v8 a bordo. Pero no puedo averiguar, cómo usarlo (sin incorporar una copia dentro de mi aplicación). Según la primera respuesta enlazada por soulseekah puedo vincular contra libwebcore.so usando ndk. Pero v8 tiene C + +, no C API y todos los nombres son mutilados en. Así que prevenir vinculador de encontrarlos. I'v logró compilar mi propia copia de v8 de su fuente y utilizarlo en mi aplicación a través de ndk, pero el resultante .so es 17Mb (!!!), que está muy lejos de ser aceptable.

Así que mi pregunta es, ¿cómo puedo utilizar v8 enviado con dispositivos Android (en los dispositivos que realmente lo tienen) a través de NDK o de alguna otra manera? O, si no es posible, ¿hay otros mecanismos de secuencias de comandos (para JavaScript o para otro idioma) que cumplan con mis requisitos de tamaño binario? O puede ser que hay algún truco con v8, que permite hacer que sea mucho más pequeño en tamaño (puede ser al costo de la velocidad o algunas características de idioma de apoyo)?

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