andjs

js engine for android, support quickjs & chromium v8

Github stars Tracking Chart

andjs

  • support js engine quickjs and chromium v8
  • native javascript object, such as jscrypto, adb
  • multi-instance support
  • inject java method by annotation

How to integrate andjs:

1: add andjs aar into your project
2: new AndJS(context) to create AndJS Instance
3: @CalledByJavascript to annotation your java method, which will be called in javascript
4: mJSInstance.injectObject to inject java object
5: mJSInstance.loadJSBuf(String jsbuf) to Run javascript

Sample code

import com.github.wuruxu.andjs.AndJS;
public class MainActivity extends AppCompatActivity {
    private AndJS mJSInstance;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      mJSInstance = new AndJS(this); //create AndJS Instance
      
      obj = new MyObject();
      //Inject java object into v8 engine as 'myobject'
      mJSInstance.injectObject(obj, "myobject", null);
      
      //Inject this Activity object into v8 engine as 'myactivity'
      mJSInstance.injectObject(this, "myactivity", null);
      
      String jsbuf = "myobject.doLog('This is a JS string');";
			jsbuf += "var msg = myobject.getMessage(); adb.info(msg);";
			jsbuf += "var home = myobject.getMyHome(); home.printRect(0, 0, 512, 512);";
			jsbuf += "var homemsg = home.getMessage(); adb.info(homemsg);";
			jsbuf += "var version = get_v8_version(); myactivity.updateTitle(version);";
        
      mJSInstance.loadJSBuf(jsbuf); // Run Javascript in V8 engine
    }
    
    @CalledByJavascript
    void updateTitle(String version) {
    	String str = getTitle().toString();
	str += "@v8(" + version+")";
	setTitle(str);
    }
}

//sample code of MyObject
import com.github.wuruxu.andjs.CalledByJavascript;

public class MyObject extends Object {
	private static final String TAG = "MyObject";
	private MyHome home;

	public MyObject() {
		home = new MyHome();
	}

	@CalledByJavascript
	public void doLog(String msg) {
		Log.i(TAG, " * " + msg);
	}

	@CalledByJavascript
	public String getMessage() {
		return "This is a java string";
	}

	@CalledByJavascript
	public MyHome getMyHome() {
		return home;
	}
}

//sample code of MyHome
import com.github.wuruxu.andjs.CalledByJavascript;

public class MyHome extends Object {
	private static final String TAG = "MyHome";

	public MyHome() {}

	@CalledByJavascript
	public void printRect(int x0, int y0, int x1, int y1) {
		Log.i(TAG, " * x0 " + x0 + " y0 " + y0 + " x1 " + x1 + " y1 " + y1);
	}

	@CalledByJavascript
	public String getMessage() {
		return "This is a java string from MyHome";
	}
}

Donate

Your donation makes andjs better:

Main metrics

Overview
Name With Ownerwuruxu/andjs
Primary LanguageC++
Program languageC++ (Language Count: 3)
Platform
License:
所有者活动
Created At2019-06-25 07:18:48
Pushed At2019-08-02 12:33:55
Last Commit At2019-08-02 20:33:33
Release Count4
Last Release Namev1.0.0d-quickjs (Posted on )
First Release Namev1.0.0a (Posted on )
用户参与
Stargazers Count2
Watchers Count0
Fork Count1
Commits Count58
Has Issues Enabled
Issues Count1
Issue Open Count1
Pull Requests Count0
Pull Requests Open Count0
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private