|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
很多框架是用C写的学习iOS开发基础可以按照下面两个方面学基础(原料钢铁塑料)媒介
关于插件,已在各年夜平台上呈现过良多,eclipse插件、chrome插件、3dmax插件,一切这些插件也许都为了在一个主程序中完成对照通用的功效,把营业相干大概让可让用户自界说扩大的功效不附加在主程序中,主程序可在运转时安装和卸载。
在android怎样完成插件也已被普遍传布,完成的道理都是完成一套插件接口,把插件完成编成apk大概dex,然后在运转时利用DexClassLoader静态加载出去,这里分享一下DexClassLoader加载道理和剖析在完成插件时分歧操纵形成毛病的缘故原由。
插件Sample
先往返顾一下怎样在Android平台下做插件吧,起首界说一个插件接口IPlugin(实在不利用接口也能够,在加载类的时分间接利用反射挪用相干类,但写代码来对照蛋疼):
Java1
2
3
4
5
publicinterfaceIPlugin{
publicStringgetName();
publicStringgetVersion();
publicvoidshow();
}
Java1
2
3
4
5
publicinterfaceIPlugin{
publicStringgetName();
publicStringgetVersion();
publicvoidshow();
}
Java1
2
3
4
5
publicabstractclassAbsPlugin{
publicabstractStringgetName();
publicabstractStringgetVersion();
publicabstractvoidshow();
}
写好这个接口后,导出这个IPlugin天生jar包,这个相称于SDK了,然后新建一个工程并,这个工程以援用体例(即eclipse中externallibrary)援用这个包后,完成这个接口:
Java1
2
3
4
5
6
7
8
9
10
11
12
13
publicclassPluginImpextendsAbsPlugin{
publicStringgetName(){
return"PluginImp";
}
publicStringgetVersion(){
return"1.0";
}
publicvoidshow(){
android.util.Log.("PluginImp","hahaImpluginimp");
}
}
编译这个工程并天生apk大概导出完成类天生dex,这时候就做好了我们的插件实体,最初在我们的主工程里把插件接口的jar(即插件SDK)放在lib目次下在apk编译时打包出去,同时用上面的代码在必要的时分加载出去挪用:
<p>Java1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
try{
ClassLoaderclassLoader=context.getClassLoader();
<p> |
|