最近在开发一个Android上的浏览器插件,因此总结了一些经验。
首先,我们应该对Netscape Plugin API有一定的了解,相关的资料可以查阅这个网页:https://developer.mozilla.org/en/Gecko_Plugin_API_Reference
值得庆幸的是,Android的源码目录下提供了Plugin的范例,早期版本的源码包中,这个例子在external/webkit/WebKit/android/plugins/sample,但这个例子应该说不是太完整的,只包含了.so的生成,后来的源代码包中这个sample目录被删除了,取而代之的是development/samples/BrowserPlugin,通过这个版本的例子编译生成的是完整的apk安装包,可以在模拟器或者真机上安装测试。
我们可以看一看BrowserPlugin的目录:
jni目录,这个目录是插件的主体,Native C/C++写的Shared Library,负责NPAPI中NPP侧的实现。新版的plugin例子采用了子插件的结构,提供了五种类型的子插件,我们可以根据自己的需要进行参考。
res目录,和一般的android工程一样,存放资源的目录。
src目录,java代码的目录,实现了一个service类,并对surface绘制方式的plugin提供java的接口。
AndroidManifest.xml,同样是每个android的工程都会有文件,包含了apk的注册信息,就在这里实现pluging的注册。
Android.mk,编译配置文件。
通过这个例子,我们可以看到一个基本的plugin是如何实现的。对于plugin的更详细的说明将在以后阐述。