J2V8 For Android
J2V8是基于Google的JavaScript引擎V8的Java开源项目,实现Java和JavaScript的相互调用。并对Android平台提供支持,最新版本提供了aar格式的类库包方便Android Studio集成。
一、下载并为Android Studio配置j2v8库
J2V8开源项目在github的地址为:https://github.com/eclipsesource/J2V8,下载源码可以按照说明自行编译。也可直接使用官方编译好的aar格式的类库直接集成,下载地址:http://central.maven.org/maven2/com/eclipsesource/j2v8/j2v8/4.2.0/。这里是最新版本的下载地址,版本号为:4.2.0,其对应的V8引擎的版本号为:4.10.253。
1.下载后解压可得到一个aar格式的文件,修改名称为:j2v8.aar,并放到工程目录下的lib文件夹中,如下图:

2.修改app下build.gradle文件,添加如下内容:
repositories {
flatDir {
dirs 'libs'
}
}
dependencies下添加如下一行内容:
compile(name:'j2v8', ext:'aar')
修改后的build.gradle文件如下,其中标识部分为添加内容:

3.完成后,重新编译工程,在app/build/intermediates/exploded-aar目录下就可以看见我们引用的aar,如下图所示:

二、J2V8使用
添加一个测试工具类,并将工具类方法桥接到Java的方法中,定义Java类的示例代码如下:
public class J2V8TestCase {
public void print(String str) {
System.out.println(str);
}
public int jia(int a, int b) {
return a + b;
}
}
编写J2V8桥接代码,如下:
//工具类添加处理
public void testStaticClass() {
V8 v8 = V8.createV8Runtime(); String v = V8.getV8Version();
System.out.println(v); V8Object testUtil = new V8Object(v8);
v8.add("TestUtil", testUtil);
testUtil.add("name", "test1"); testUtil.registerJavaMethod(new J2V8TestCase(), "jia", "native_jia",new Class[]{int.class, int.class});
testUtil.registerJavaMethod(new J2V8TestCase(), "print", "native_print",new Class[]{String.class});
StringBuilder sb = new StringBuilder();
sb.append("var str= 'Hello' + TestUtil.native_jia(100, 111);");
sb.append("TestUtil.native_print(str);");
v8.executeVoidScript(sb.toString()); testUtil.release();
v8.release();
}
J2V8 For Android的更多相关文章
- 【Android】java中调用JS的方法
最近因为学校换了新的教务系统,想做一个模拟登陆功能,发现登陆的账号和密码有一个js脚本来进行加密 整理了一下java中执行JS的方法 智强教务 账号 密码 加密方法 var keyStr = &quo ...
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 配置android sdk 环境
1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/
- Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记
以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...
- Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记
以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- Android Studio 多个编译环境配置 多渠道打包 APK输出配置
看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...
随机推荐
- linux系统之定制rpm包
FPM打包工具 FPM的作者是jordansissel FPM的github:https://github.com/jordansissel/fpm FPM功能简单说就是将一种类型的包转换成另一种类型 ...
- 【学习笔记】BEST定理
害怕忘记简单写一点: 无向图的生成树计数:https://www.cnblogs.com/zj75211/p/8039443.html (*ZJ学长 ORZ ) 有向图的欧拉回路计数:https: ...
- BZOJ 1391 [Ceoi2008]order
1391: [Ceoi2008]order Description 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完 ...
- js正则取出一个字符串小括号中的内容
var aa="ldfjsldfj(dsfasjfj3124123)"; var result = aa.match(/\(([^)]*)\)/); // 此时result=[&q ...
- Python完成RF测试用例
Robot Framework 框架是基于 Python 语言开发的,所以,它本质上是 Python 的一个库. from robot.api import TestSuite from robot. ...
- nginx 代理tcp长连接短连接配置
https://blog.csdn.net/tayinyinyueyue/article/details/78932697 nginx使用ngx_stream_core_module模块代理tcp长连 ...
- 解决ImportError: cannot import name HTTPSHandler
/usr/local/python3.5/bin/pip3.5 install flask 的时候遇到了cannot import name HTTPSHandler 1. 原因在于openssl,o ...
- python基础之模块之sys模块
sys模块的功能 sys是python中较为常用的一个模块,他提供了对python脚本运行时的环境的操作. sys功能: 1 sys.argv #将python脚本运行时的脚本名以及参数作为 ...
- python基础之字符串格式化
python中字符串格式化有两种,一种是%,另一种是str中的format()功能. % 列举格式符 %s 字符串 %c 单个字符 %b 二进制整数 %d 十进制整数 %i ...
- python的if条件语句的语法和案例
1.条件语句 缩进用4个空格 if条件: #条件成功, else: #条件不成功 if条件:{ #条件成功, #条件成功, }else{ #条件不成功, #条件不成功, } if的语法就是这样或者是用 ...