J2V8是基於Google的JavaScript引擎V8的Java開源項目,實現Java和JavaScript的相互調用。並對Android平臺提供支持,最新版本提供了aar格式的類庫包方便Android Studio集成。 ...
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類的示例代碼如下:
1 public class J2V8TestCase { 2 public void print(String str) { 3 System.out.println(str); 4 } 5 6 public int jia(int a, int b) { 7 return a + b; 8 } 9 }
編寫J2V8橋接代碼,如下:
1 //工具類添加處理 2 public void testStaticClass() { 3 V8 v8 = V8.createV8Runtime(); 4 5 String v = V8.getV8Version(); 6 System.out.println(v); 7 8 V8Object testUtil = new V8Object(v8); 9 v8.add("TestUtil", testUtil); 10 testUtil.add("name", "test1"); 11 12 testUtil.registerJavaMethod(new J2V8TestCase(), "jia", "native_jia",new Class[]{int.class, int.class}); 13 testUtil.registerJavaMethod(new J2V8TestCase(), "print", "native_print",new Class[]{String.class}); 14 StringBuilder sb = new StringBuilder(); 15 sb.append("var str= 'Hello' + TestUtil.native_jia(100, 111);"); 16 sb.append("TestUtil.native_print(str);"); 17 v8.executeVoidScript(sb.toString()); 18 19 testUtil.release(); 20 v8.release(); 21 }