android预览插件下载,默认android浏览器的浏览器插件

我最近尝试制作一个Android插件并在SO上找到了很多问题,但没有太多详细的答案,所以我想我会在这里分享我的研究,即使这个问题已经很老了.我不确定插件是否真的是你想要在这里做的,因为你可以使用谷歌的JSON / ATOM自定义搜索API并解析它,但尽管如此,我还提供了有关如何在Android上运行插件的详细信息.我希望它对其他人有用.

// Only plugin matches one of the signatures in the list can be loaded

// inside the WebView process

private static final String SIGNATURE_1 = "308204c5..."

这里使用的签名是Adobe Flash插件的签名(现在已经被Adobe删除了.)

在这里你会看到:

if (SystemProperties.getBoolean("ro.secure", false)) {

boolean signatureMatch = false;

for (Signature signature : signatures) {

for (int i = 0; i < SIGNATURES.length; i++) {

if (SIGNATURES[i].equals(signature)) {

signatureMatch = true;

break;

}

}

}

if (!signatureMatch) {

return false;

}

}

这意味着如果ro.secure = 0则它不会检查签名 – 否则它只允许使用flash插件.

ro.secure是一个构建属性,如果您拥有设备的root权限,或者您有一个开发构建(输入adb shell getprop ro.secure以查找您拥有的内容),则可以设置该属性.您可以研究如何在必要时进行更改.我使用的是高通Snapdragon MDP8960,它是开发板,已经有ro.secure = 0.要让您的插件包含在Android中,您必须与负责人交谈 – 不确定目前这是多么可行.

现在编写一个插件 – 你可以在android sourcetree中找到一个名为SampleBrowserPlugin的例子(确保你有一个64位的linux机器,如果你想构建它 – 从源树根类型make make SampleBrowserPlugin.你可能需要设置首先使用午餐构建配置,你可以在android源码树网站上找到说明)

我实际上从android source on github获取了我需要的源代码并且创建了源代码的NDK构建,因为我比修改android构建脚本更熟悉如何做到这一点.它也比下载整个安卓树快得多 – 你可以通过查看Android.mk中包含的内容来查看下载内容(见下文).

基本上,我从设备中提取了我需要的共享对象库,以确保我的插件兼容.它们位于我的设备上的/ system / lib中:(例如,从您希望存储它们的目录中键入adb pull /system/libnativehelper.so等)

得到以下内容:

libnativehelper.so

libandroid.so

libutils.so

libcutils.so

libEGL.so

libGLESv2.so

libskia.so

将它们放在SO_LIB_PATH指向Android.mk的位置(参见下文并根据需要更改路径).

然后在安装NDK sdk之后,您应该能够使用以下构建脚本 – 不需要64位机器 – (您可以安装winbash,使用cygwin或Linux虚拟机,例如Oracle VM VirtualBox:

(将这些文件放在C:/ Path / BrowserPlugin / jni /中,并确保ndk-build命令在您的路径上)

(如果你在Linux上从ndk-build.cmd中删除.cmd)

build.sh:

#!/bin/bash

echo -e "Mode: Debug"

OPTIM=debug

### ---------------- Generic Build Command ----------------

# run NDK build

ndk-build.cmd \n -d \n -B \n NDK_DEBUG=1 \n NDK_PROJECT_PATH=C:/Path/BrowserPlugin/jni \n NDK_APPLICATION_MK=C:/Path/BrowserPlugin/jni/Application.mk \n NDK_MODULE_PATH=C:/Path/BrowserPlugin/jni \n NDK_APP_OUT=C:/Path/BrowserPlugin/jni/Out/ \n APP_BUILD_SCRIPT=C:/Path/BrowserPlugin/jni/Android.mk \n APP_OPTIM=$OPTIM

cp C:/Path/BrowserPlugin/jni/Out/local/armeabi/libsampleplugin.so C:/Path/BrowserPlugin/libs/armeabi/.

echo "copied libsampleplugin.so into PROJECT_ROOT/libs dir"

Android.mk:

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := \n main.cpp \n PluginObject.cpp \n RenderingThread.cpp \n animation/AnimationPlugin.cpp \n animation/AnimationThread.cpp \n audio/AudioPlugin.cpp \n background/BackgroundPlugin.cpp \n form/FormPlugin.cpp \n navigation/NavigationPlugin.cpp \n paint/PaintPlugin.cpp \n video/VideoPlugin.cpp \n jni-bridge.cpp \n

WEBCORE_PATH := C:/Path/AndroidBrowserPlugin/webkit/Source/WebCore

LOCAL_C_INCLUDES += \n $(JNI_H_INCLUDE) \n $(LOCAL_PATH) \n $(LOCAL_PATH)/animation \n $(LOCAL_PATH)/audio \n $(LOCAL_PATH)/background \n $(LOCAL_PATH)/form \n $(LOCAL_PATH)/navigation \n $(LOCAL_PATH)/paint \n $(LOCAL_PATH)/video \n $(WEBCORE_PATH)/bridge \n $(WEBCORE_PATH)/plugins \n C:/Path/AndroidBrowserPlugin/webkit/Source/WebKit/android/JavaVM \n C:/Path/AndroidBrowserPlugin/webkit/Source/WebKit/android/plugins \n C:/Path/AndroidBrowserPlugin/platform_external_skia/include/core \n C:/Path/AndroidBrowserPlugin/frameworks_native/include \n C:/Path/AndroidBrowserPlugin/frameworks_native/libs \n C:/Path/AndroidBrowserPlugin/frameworks_native/opengl/libs \n C:/Path/AndroidBrowserPlugin/platform_system_core/include \n C:/Path/AndroidBrowserPlugin/frameworks_native/opengl/include \n C:/Users/user/android-ndk-r8c/platforms/android-14/arch-arm/usr/include \n C:/Path/AndroidBrowserPlugin/BrowserPlugin/jni/libs/armeabi \n C:/Path/AndroidBrowserPlugin/platform_bionic \n C:/Path/AndroidBrowserPlugin/platform_bionic/libc/private \n C:/Path/AndroidBrowserPlugin/platform_hardware_libhardware/include

SO_LIB_PATH := C:/Path/AndroidBrowserPlugin/libs_qualcomm_MDP8960

LOCAL_LDLIBS := \n -L$(SO_LIB_PATH)/ -lnativehelper -landroid -lutils -lcutils -lEGL -lGLESv2 -lskia

LOCAL_CFLAGS += -fvisibility=hidden

LOCAL_CFLAGS += -DHAVE_PTHREADS -DANDROID

LOCAL_MODULE:= libsampleplugin

LOCAL_MODULE_TAGS := optional

include $(BUILD_SHARED_LIBRARY)

Application.mk:

# =============================================================================

#

# Main build file defining the project modules and their global variables.

#

# =============================================================================

# Don't remove this - mandatory

APP_PROJECT_PATH := $(call my-dir)

# The only STL implementation currently working with exceptions

APP_STL := gnustl_static

# Don't optimize for better debugging

APP_OPTIM := debug

您可能还需要一些头文件(例如JNIHelp.h),您可以放置??它们,例如在你正在做ndk构建BrowserPlugin / jni /的根目录中.

希望bash build.sh应该构建你的libsampleplugin.so,构建脚本将其复制到app目录中.你可以,例如将项目导入eclipse并构建应用程序.将其安装在设备上,然后例如使用WAMP服务器来托管以下文件:

index.html的:

Test Plugin

从主机运行ipconfig以获取IP地址,例如192.168.x.x

然后将您的设备浏览器指向例如http://192.168.x.x/瞧你应该看一个表单插件.

我无法使动画插件正常工作,并且表单插件无法完全正常工作,但至少插件已被识别并加载正常.

现在,您可以使用示例插件浏览器作为指南或其他Internet资源编写webkit NPAPI插件来执行您喜欢的操作.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值