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.
- Acerca de RenderScript
- Problemas con el script wifi de Android
- Habilitar / deshabilitar wifi mediante scripts bash en Android
- Cómo hacer los métodos en beanshell?
- Cambiar el nombre de archivos en Android
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)?
- ¿Es ASE lo suficientemente maduro como para empezar a desarrollar aplicaciones para Android?
- Configuración del perfil de hardware de la línea de comandos AVD de Android
- ¿Es posible incorporar Guile en una aplicación C ++ en iOS o Android?
- ¿Hay un lenguaje de scripting que puedo incrustar en mi aplicación Java en android
- ¿Cómo obtener un script en init.d para ejecutar al arrancar en Android?
- ¿Hay un comando ADB para habilitar / deshabilitar datos móviles? (Dispositivo enraizado)
Poco tarde en esta pregunta, pero de todos modos. Estoy usando frasco de rinoceronte y está funcionando bien. Acerca de build v8 .so. Tal vez usted necesita para ejecutar también brazo-eabi-tira