• 磕磕碰碰的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: acl_sdkpepper_37"

    6.编译项目

    cmd下进入C: acl_sdkpepper_37getting_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.爬上博客园来发个帖子,看有没有人有办法!!!

  • 相关阅读:
    几种归一化方法的概念及python实现
    python 中几种基本的矩阵操作应用
    exec 命令简单用法 和 find 搭配用法示例
    使用git在github上创建新工程
    gcc编译参数详解概述
    此心不明,能有何为
    多个文件目录下Makefile的写法
    《高效能程序员的修炼》读后思考之写作的重要性
    音频格式RAW和PCM区别和联系
    SWIG 基本概念和入门
  • 原文地址:https://www.cnblogs.com/studynote/p/4097578.html
Copyright © 2020-2023  润新知