˵Ã÷:¿ÉÒÔʹÓð²×¿studio ¿ª·¢³öapk,jar,»òÕßdexʹÓô˷½·¨¼ÓÔØÄ£¿é,
×¢Òâ:²å¼þÖ±½Ó·Åµ½²å¼þÎļþ¼ÐÖÐÈ»ºóÉÏ´«µ½ÊÖ»ú
Ó¢ÎÄ·½·¨: loadDex(plugin)£¬¼ÓÔØ²å¼þµ½ÏµÍ³
²ÎÊý£º
plugin:²å¼þÃû³ÆÀýÈçµ¼ÈëµÄ²å¼þΪ p1.dex,Ôò²ÎÊýÃû¾ÍÌîд loadPlugin(¡®p1.dex¡¯)
°¸Àý:
//µ¼ÈëdexÄ£¿é
rhino.loadDex('p1.dex')
//µ¼ÈëapkÄ£¿é
rhino.loadDex('demo.apk')
importClass µ¼Èë²å¼þÖеÄÀà
·½·¨ËµÃ÷:ͨ¹ýÕâ¸ö·½·¨¿ÉÒÔµ¼Èë²å¼þÀï±àдºÃµÄÀà
Ó¢ÎÄ·½·¨:importClass(class);
ÖÐÎÄ·½·¨:µ¼ÈëÀà(ÀàµØÖ·,Àà±ðÃû);
²ÎÊý:
class:ÀàµØÖ· ÀýÈç com.autoapp.pluginsdemo.demo
°¸Àý:
//µ¼Èë²å¼þÎļþ
rhino.loadDex('demo.apk')
//Èç¹ûÐèÒªÒýÓöà¸öapk ÐèÒª¼ÓÉÏÀർÈë
rhino.loadClass("com.autoapp.pluginsdemo.demo")
//ÒýÓÃÀà
importClass(com.autoapp.pluginsdemo.demo);
var demo1=new demo();
printl(demo1.hello());
ʾÀý1£º¼ÓÔØµ¥¸öDEXÄ£¿é²¢µ¼ÈëÀà
¼ÙÉèÄãÓÐÒ»¸öÃûΪmathModule.dex
µÄÄ£¿é£¬ÆäÖаüº¬Ò»¸öÀàcom.autoapp.mathmodule.MathUtils
¡£
// ¼ÓÔØDEXÄ£¿é
rhino.loadDex('mathModule.dex');
// µ¼ÈëÀà
importClass(com.autoapp.mathmodule.MathUtils);
// ´´½¨ÀàʵÀý²¢µ÷ÓÃÆä·½·¨
var mathUtils = new MathUtils();
printl(mathUtils.add(5, 3)); // Êä³ö: 8
printl(mathUtils.subtract(5, 3)); // Êä³ö: 2
ʾÀý2£º¼ÓÔØµ¥¸öAPKÄ£¿é²¢µ¼ÈëÀà
¼ÙÉèÄãÓÐÒ»¸öÃûΪdemoApp.apk
µÄÄ£¿é£¬ÆäÖаüº¬Ò»¸öÀàcom.autoapp.demoapp.DemoClass
¡£
// ¼ÓÔØAPKÄ£¿é
rhino.loadDex('demoApp.apk');
// µ¼ÈëÀà
rhino.loadClass("com.autoapp.demoapp.DemoClass");
importClass(com.autoapp.demoapp.DemoClass);
// ´´½¨ÀàʵÀý²¢µ÷ÓÃÆä·½·¨
var demoClass = new DemoClass();
printl(demoClass.getMessage()); // Êä³ö: Hello from DemoClass
ʾÀý3£º¼ÓÔØ¶à¸öAPKÄ£¿é²¢µ¼ÈëÀà
¼ÙÉèÄãÓÐÁ½¸öAPKÄ£¿é£¬app1.apk
ºÍapp2.apk
£¬·Ö±ð°üº¬Ààcom.autoapp.app1.App1Class
ºÍcom.autoapp.app2.App2Class
¡£
// ¼ÓÔØµÚÒ»¸öAPKÄ£¿é
rhino.loadDex('app1.apk');
rhino.loadClass("com.autoapp.app1.App1Class");
importClass(com.autoapp.app1.App1Class);
// ´´½¨µÚÒ»¸öAPKÖеÄÀàʵÀý²¢µ÷ÓÃÆä·½·¨
var app1Class = new App1Class();
printl(app1Class.getName()); // Êä³ö: App1
// ¼ÓÔØµÚ¶þ¸öAPKÄ£¿é
rhino.loadDex('app2.apk');
rhino.loadClass("com.autoapp.app2.App2Class");
importClass(com.autoapp.app2.App2Class);
// ´´½¨µÚ¶þ¸öAPKÖеÄÀàʵÀý²¢µ÷ÓÃÆä·½·¨
var app2Class = new App2Class();
printl(app2Class.getName()); // Êä³ö: App2
ʾÀý4£º´¦Àí²å¼þÎļþ¼ÐÖеIJå¼þ
¼ÙÉèÄãÓÐÒ»¸ö²å¼þÎļþ¼Ð£¬ÆäÖаüº¬¶à¸ö²å¼þÎļþ£¬Èçplugin1.dex
¡¢plugin2.apk
µÈ¡£
// ¼ÙÉè²å¼þÎļþ¼Ð·¾¶Îª /sdcard/plugins/
// ¼ÓÔØµÚÒ»¸ö²å¼þ
rhino.loadDex('/sdcard/plugins/plugin1.dex');
importClass(com.autoapp.plugin1.Plugin1Class);
// ´´½¨µÚÒ»¸ö²å¼þÖеÄÀàʵÀý²¢µ÷ÓÃÆä·½·¨
var plugin1Class = new Plugin1Class();
printl(plugin1Class.getVersion()); // Êä³ö: Version 1.0
// ¼ÓÔØµÚ¶þ¸ö²å¼þ
rhino.loadDex('/sdcard/plugins/plugin2.apk');
rhino.loadClass("com.autoapp.plugin2.Plugin2Class");
importClass(com.autoapp.plugin2.Plugin2Class);
// ´´½¨µÚ¶þ¸ö²å¼þÖеÄÀàʵÀý²¢µ÷ÓÃÆä·½·¨
var plugin2Class = new Plugin2Class();
printl(plugin2Class.getFeature()); // Êä³ö: Feature 2
˵Ã÷£º
- ¿ª·¢ÎļþÀàÐÍ£º¿ÉÒÔʹÓÃAndroid Studio¿ª·¢³öAPK¡¢JAR»òÕßDEXÎļþ¡£ÕâЩÎļþ¿ÉÒÔ×÷Ϊģ¿é±»¼ÓÔØ¡£
- ²å¼þ¼ÓÔØ·½Ê½£º½«²å¼þÖ±½Ó·Åµ½Ö¸¶¨µÄ²å¼þÎļþ¼ÐÖУ¬È»ºóÉÏ´«µ½ÊÖ»ú¡£
- ¼ÓÔØ²å¼þ£ºÊ¹ÓÃ
loadDex(plugin)
·½·¨¼ÓÔØ²å¼þµ½ÏµÍ³¡£
- ²ÎÊý£º
plugin
Ϊ²å¼þµÄÃû³Æ£¬ÀýÈçµ¼ÈëµÄ²å¼þÎļþΪp1.dex
£¬Ôò²ÎÊýÃûÌîдΪloadDex('p1.dex')
¡£ - °¸Àý£º
- µ¼ÈëÒ»¸öDEXÄ£¿é£º
rhino.loadDex('p1.dex')
- µ¼ÈëÒ»¸öAPKÄ£¿é£º
rhino.loadDex('demo.apk')
- µ¼Èë²å¼þÖеÄÀࣺʹÓÃ
importClass(class)
·½·¨µ¼Èë²å¼þÀï±àдºÃµÄÀà¡£
- ÖÐÎÄ·½·¨£º
µ¼ÈëÀà(ÀàµØÖ·,Àà±ðÃû)
- ²ÎÊý£º
class
£ºÀàµØÖ·£¬ÀýÈçcom.autoapp.pluginsdemo.demo
- µ¼ÈëÒ»¸ö²å¼þÎļþ£º
rhino.loadDex('demo.apk')
- Èç¹ûÐèÒªÒýÓöà¸öAPKÎļþ£¬ÐèÒªÖð¸ö¼ÓÔØÀàÎļþ£º
rhino.loadClass("com.autoapp.pluginsdemo.demo")
- ÒýÓÃÀࣺ
importClass(com.autoapp.pluginsdemo.demo)