您的位置:首页 > 移动开发 > Android开发

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

2011-12-24 09:21 471 查看
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

view
plain

To compile and install a plugin on a device/emulator simply...  

  

1. run "make SampleBrowserPlugin" (compiles libsampleplugin.so and builds the apk)  

2. the previous command produces an apk file so record its location  

3. run "adb install [apk_file]" to install it on a device/emulator  

4. the browser will auto recognize the plugin is available  

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

view
plain

<html>  

<head>  

<title>test</title>  

</head>  

  

<body>  

<object type="application/x-testbrowserplugin" id="sample">  

    <param name="DrawingModel" value="Surface" />  

    <param name="PluginType" value="Background" />  

</object>  

      

<object type="application/x-testbrowserplugin" id="ball">  

    <param name="DrawingModel" value="Bitmap" />  

    <param name="PluginType" value="Animation" />  

</object>  

      

</body>  

</html>  

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

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

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

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

view
plain

<uses-permission android:name="android.webkit.permission.PLUGIN"/>  

  

<uses-sdk android:minSdkVersion="3" />  

  

<application android:icon="@drawable/sample_browser_plugin"  

             android:label="@string/sample_browser_plugin">  

    <service android:name=".SamplePlugin">  

        <intent-filter>  

            <action android:name="android.webkit.PLUGIN" />  

        </intent-filter>  

        <meta-data android:name="type" android:value="native" />  

    </service>  

</application>  

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

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

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

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

    最最后,打包apk。

    可以看到,插件制作的主要部分在动态库的生成部分,下一节我们主要讨论动态库应该如何编写
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息