磕磕碰碰的Chrome之plugin开发

前言

在Firefox下可用的npapi插件,在chrome下调用时遇到问题,于是尝试研究chrome下的ppapi插件,一路上真是磕磕碰碰,波折不断啊。

阶段一、复用npapi

尝试将npapi直接用在chrome中,结果在chrome://plugins页下能看到npapi的插件,调试时看到插件对象被创建了,但是无法调用插件对象的函数。

之后各种尝试未果,网上一搜貌似2013年的时候chrome就开始逐渐不支持npapi了,于是只有尝试ppapi。。。

阶段二、创建ppapi

建简单的ppapi dll项目,运行命令chrome --register-pepper-plugins="G:\\example.dll#ppexample##1.0.0;a
pplication/x-ppapi-example" file:///G:/web/index.html打开chrome,插件可用,可惜直接打开chrome,插件不可用,且在chrome://plugins页下找不到插件。

虽然在官方说明中看到了这个命令行是调试用的,但是找了一圈也没找到发布的命令,郁闷坏了。。。

然后各种尝试,在chrome://plugins页下找已存在的PPAPI插件,然后在注册表中找可能注册的位置,结果搜索一圈都没找到!!!

最后看到在网上看到有老外说发布不能直接发布ppapi,要发布成NaCl!不知道为啥还能在chrome://plugins页下找已存在的PPAPI插件呢?

阶段三、NaCl环境搭建

1.越狱

不越狱你休想访问google的资源,这点真让人郁闷:(

2.下载

在https://developer.chrome.com/native-client上下载sdk并解压。

3.更新

cmd中进入sdk目录下,输入naclsdk list执行完后再输入naclsdk update,偶这个版本都到pepper37了。

4.下载并安装python

注意下载python2.7,而不要下载3.*

5.配置参数

进入系统环境变量

Path中加入python安装目录如"C:\Python27;"

新建变量NACL_SDK_ROOT,值为nacl_sdk的pepper路径如"C:\nacl_sdk\pepper_37\"

6.编译项目

cmd下进入C:\nacl_sdk\pepper_37\getting_started下,输入make可进行编译,输入make serve可编译并启动python服务器,

7.配置chrome

进入chrome的chrome://flags/下启用Native Client。

进入开发者工具下面点击右边的设置按钮,在General Tab下选择Disable cache。

8.查看效果

需要注意的是nacl只能在服务器环境下查看效果,也就是说你没法像别的浏览器一样,直接输入,file:\\\c:\index.html打开页面就能看到效果,而必须在服务器环境下查看效果。

按nacl sdk的设定,直接用命令make serve就能启动服务器,然后输入http://localhost:5103查看效果

我的机子环境比较郁闷,每次cmd都显示成功启动了服务器,但是只要输入http://localhost:5103,都提示httpd.py一堆错误,估计是我的python版本和httpd.py不兼容吧,因为我对python不大熟悉,我也懒得折腾这个问题了,直接把build好的东西放到一个服务器下,就能看效果了。

走的这一步就算是nacl新手上路了,但是这个还没完,更郁闷的是下一阶段

阶段四、尝试用windows函数

因为我想要做的应用,是想能够访问windows系统下的盘符的,在npapi中,我调用了FindFirstVolume等windows函数。郁闷的是将这函数转移到nacl中又是遇到重重问题:

1.先是make的时候提示没有找到定义,这个好办,在makefile中用-I将vs的头文件路径都给加上

2.接着再make,各种错误一大堆,无法识别的int64__等等类型、Only Win32 targets supported!等,找了一圈也没找到解决的办法。可能可以通过-target和-arch参数的配置来解决,但是没找到正确的配置方法

3.接着只有尝试找nacl_sdk自带的一些函数库,找了一圈,倒是找到获取文件夹下文件的函数了,就是没找到获取盘符内容的函数。。。

4.想找不用windows函数的替代函数,可惜没找到:(

5.爬上博客园来发个帖子,看有没有人有办法!!!

时间: 2024-08-03 22:09:39

磕磕碰碰的Chrome之plugin开发的相关文章

[Cordova] Plugin开发架构

[Cordova] Plugin开发架构 问题情景 开发Cordova Plugin的时候,侦错Native Code是一件让人困扰的事情,因为Cordova所提供的错误讯息并没有那么的完整.常常需要花费大量的时间与精神之后,才发现只是一个字母打错,无形中降低了开发的效率. 解决方案 为了增加Cordova Plugin开发的效率,开发人员可以套用下列的开发架构,来加速开发: 将实际提供功能的Native Code,使用IDE封装为Native Library.在这个步骤中,使用IDE封装Nat

Chrome浏览器扩展开发系列之十四:本地消息机制Native messagin

Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 2016-11-24 09:36 114人阅读 评论(0) 收藏 举报  分类: PPAPI(27)  通过将浏览器所在客户端的本地应用注册为Chrome浏览器扩展的"本地消息主机(native messaging host)",Chrome浏览器扩展还可以与客户端本地应用之间收发消息. 客户端的本地应用注册为Chrome浏览器扩展的"本地消息主机"之后,Chrome浏览器会在独立的

[Cordova] Plugin开发入门

[Cordova] Plugin开发入门 Overview Cordova的设计概念,是在APP上透过Web控件来呈现Web页面,让Web开发人员可以操作熟悉的语言.工具来开发APP.使用Web页面来呈现功能内容,的确可以满足大部分的功能需求,但是因为APP的使用情景毕竟有别于Web,某些APP的功能需求像是:拨打电话.扫描条形码...等等,无法单纯使用Web开发技术就能实现. 为了让Web页面能够满足更多的APP功能需求,Cordova提供了Plugin机制,让Web页面能够挂载并调用Nati

Chrome浏览器扩展开发系列之十四

Chrome浏览器扩展开发系列之十四:本地消息机制Native messaging 时间:2015-10-08 16:17:59      阅读:1361      评论:0      收藏:0      [点我收藏+] 通过将浏览器所在客户端的本地应用注册为Chrome浏览器扩展的"本地消息主机(native messaging host)",Chrome浏览器扩展还可以与客户端本地应用之间收发消息. 客户端的本地应用注册为Chrome浏览器扩展的"本地消息主机"

【干货】Chrome插件(扩展)开发全攻略

[干货]Chrome插件(扩展)开发全攻略 http://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html

Chrome扩展,应用开发学习笔记之2---恶搞百度一下

Chrome扩展,应用开发学习笔记之2 恶搞百度一下 前面我们介绍了一个最简单的chrome扩展时钟,如今我来介绍一下一个恶搞百度一下的chrome扩展程序. 前面说过,manifest.json文件是用来描写叙述这个扩展的,是整个扩展的入口,同一时候也是告诉chrome怎么处理这个扩展. 恶搞百度一下: 以下我们来编写一个恶搞百度一下的扩展程序,希望从这个实例中,对于chrome拓展有一个更好的认识.先看看这个拓展的效果,例如以下图: 从图中我们能够猜到,其功能就是让你无法点击百度一下那个bu

Chrome(谷歌浏览器) 程序开发32个经常使用插件

Chrome(谷歌浏览器) 程序开发32个经常使用插件 谷歌浏览器(Chrome)在2008年底才公布.但非常快它已成为火狐(Firefox)有力竞争对手. 之前.由于有大量的附加组件的支持,所以火 狐(Firefox)是大多数网页设计者的首选浏览器.谷歌浏览器(Chrome)紧跟其后,相同开发了非常多扩展,特别是针对网页设计者的扩展,数量众 多,包含非常著名的Web Developer扩展. 以下收集的这些扩展,最好还是你也装上试试. 不管是Firefox还是Google Chrome.其强大

QCAD Plugin 开发

QCAD Plugin 开发 [email protected] Abstract. QCAD是基于GPL协议的开源CAD软件,核心功能基于Qt使用C++开发,界面及其交互使用Javascript脚本进行开发.QCAD官方推荐开发其Plugin的方式为使用Javascript脚本的方式,因为QCAD的菜单及其对应的功能全部由Javascript实现.程序有时也需要和C++直接通信,如在QCAD中使用OpenCASCADE.本文主要介绍如何来开发QCAD的插件Plugin,从而能够对QCAD进行扩

Chrome插件(扩展)开发资料

https://www.cnblogs.com/liuxianan/p/chrome-plugin-develop.html Chrome浏览器扩展开发系列 2015年 Chrome浏览器扩展开发系列之十九:扩展开发示例 Chrome浏览器扩展开发系列之十八:扩展的软件国际化chrome.i18n API Chrome浏览器扩展开发系列之十七:扩展中可用的chrome.events API Chrome浏览器扩展开发系列之十六:扩展中可用的Chrome浏览器API Chrome浏览器扩展开发系列