android 浏览器插件开发 - 流程(1)

本文介绍了Android平台上浏览器插件的开发流程,包括插件示例的编译安装步骤、HTML示例代码、插件注册和服务创建的方法以及动态库生成的具体细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://blog.csdn.net/awebkit/article/details/6713943


转载请注明出处:http://blog.csdn.net/awebkit


    android平台上的浏览器插件开发遵循NPAPI规则,关于NPAPI,请查看https://developer.mozilla.org/En/Plugins


    但是,android平台有自己的特色,比如以java语言生成service来实现插件功能。有如下问题需要解决:

          1. android浏览器插件开发流程如何?这个问题包含的小问题很多,我们慢慢展开。

          2. android对浏览器插件有了那些改变?


    本章,我们讨论第一个问题,即浏览器插件开发流程。


    首先,我们可以从android自带的插件示例开始看起。

    插件代码在android源码下面的 development/samples/BrowserPlugin 。

    编译方法也比较简单,请看README

  1. To compile and install a plugin on a device/emulator simply...  
  2.   
  3. 1. run "make SampleBrowserPlugin" (compiles libsampleplugin.so and builds the apk)  
  4. 2. the previous command produces an apk file so record its location  
  5. 3. run "adb install [apk_file]" to install it on a device/emulator  
  6. 4. the browser will auto recognize the plugin is available  

      示例HTML同样在README里面说明了。我扩充了一下,示例HTML如下

  1. <html>  
  2. <head>  
  3. <title>test</title>  
  4. </head>  
  5.   
  6. <body>  
  7. <object type="application/x-testbrowserplugin" id="sample">  
  8.     <param name="DrawingModel" value="Surface" />  
  9.     <param name="PluginType" value="Background" />  
  10. </object>  
  11.       
  12. <object type="application/x-testbrowserplugin" id="ball">  
  13.     <param name="DrawingModel" value="Bitmap" />  
  14.     <param name="PluginType" value="Animation" />  
  15. </object>  
  16.       
  17. </body>  
  18. </html>  


      解压这个apk,发现里面的主要部分是一个so库(lib/armeabi/libsampleplugin.so)


    经过简单的测试,我们对插件的用法有了大致了解。那么,编写插件的流程是如何的呢?我们可以根据BrowserPlugin 这个示例代码来分析。

    基本思想就是注册一个service,我们生成的apk包里面包含插件解析的动态库


    首先,注册service。模板如下。其中,uses-permission,intent-filter,meta-data都必须按照如下写,不能有改动。具体原因可以看PluginManager.java

  1. <uses-permission android:name="android.webkit.permission.PLUGIN"/>  
  2.   
  3. <uses-sdk android:minSdkVersion="3" />  
  4.   
  5. <application android:icon="@drawable/sample_browser_plugin"  
  6.              android:label="@string/sample_browser_plugin">  
  7.     <service android:name=".SamplePlugin">  
  8.         <intent-filter>  
  9.             <action android:name="android.webkit.PLUGIN" />  
  10.         </intent-filter>  
  11.         <meta-data android:name="type" android:value="native" />  
  12.     </service>  
  13. </application>  

    其次,生成service。生成service的代码很简单,可以完全照抄SamplePlugin.java。


    最后,生成动态库。这里需要注意的是,动态库的生成需要用到android里面关于插件部分的接口头文件。

        1. 考虑到并非每个人都会下载android源码,我们可以考虑把需要的头文件打包。这样,生成动态库的时候,需要include这些头文件,并且连接android sdk库,需要自己写makefile。好处就是脱离android源码。

        2. 下载android源码,编写和BrowserPlugin差不多的代码。好处就是比较简单。


    最最后,打包apk。


    可以看到,插件制作的主要部分在动态库的生成部分,下一节我们主要讨论动态库应该如何编写


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值