我想为我的Android应用程序添加一些脚本支持。我的应用程序不是基于Web的,它只是一个用Java编写的常见应用程序。
我需要选择脚本语言及其解释器实现来嵌入。至于语言,我更喜欢JavaScript(或更好地说ECMAScript),因为它没有任何与用户交互的内置东西(我的意思是打印smth等),这正是我需要的(我只是想添加一个几个函数和/或对象与我的一些应用程序的逻辑交互)。另一个原因是我对Python的经验很少,而且对Ruby,Lua和其他人没有任何帮助,而且就我所知,更多的人都熟悉JavaScript。
我的应用程序中的用户脚本预计会非常小并且不会经常执行,这就是脚本引擎速度无关紧要的原因。重要的主要标准是解释器引擎隐含的额外二进制apk大小。它应该尽可能小。理想情况下,几十公斤左右,在任何情况下都不超过150-200Kb(当然是在ProGuard之后)。我不需要完整的语言支持,例如没有正则表达式,我会非常高兴。 另一个重要的事情是引擎的内存消耗(但它不那么重要,然后是二进制大小)。
我知道(来自https://stackoverflow.com/a/11973689/52607和Use V8 JavaScript engine to execute JS lib without webview)现代Android设备已经拥有v8 JavaScript引擎。但我无法弄清楚,如何使用它(没有在我的应用程序中嵌入副本)。根据soulseekah的第一个链接答案,我可以使用ndk链接到libwebcore.so。但是v8有C ++,而不是C API,并且所有名称都被破坏了。所以防止链接器找到它们。我设法从源代码编译我自己的v8副本,并通过ndk在我的应用程序中使用它,但结果.so是17Mb(!!!),这远非可接受。
所以我的问题是,如何通过NDK或其他方式使用安装了Android设备的v8(在真正拥有它的设备上)?或者,如果不可能,是否有其他脚本引擎(用于JavaScript或其他语言),满足我的二进制大小要求?或者可能是v8有一些技巧,它可以使它的尺寸更小(可能是以速度为代价或某些语言功能支持)?
答案 0 :(得分:-2)
这个问题迟到了,但无论如何。 我正在使用犀牛罐,它运作良好。 关于建设的v8 .so。也许你还需要运行arm-eabi-strip