Pepper Plugin API (PPAPI) plugins 是 Google 在原有网景 NPAPI(Netscape Plugin API) 基础上开发全新浏览器插件,它将外挂插件全部放到沙盒里运行,具有更高的安全性。 PPAPI 目前支持 Chrome 浏览器及基于 Chromium 内核的浏览器。

PPAPI 基于 Google Native Client 技术实现,所以,这篇文章将讲述如何下载、安装和配置 Google Native Client SDK。

当前系统版本为 Windows 10 64 位,开发环境为 Visual Studio 2017,由于众所周知的原因,下载和配置 Native Client SDK 需要借助网络工具

值得一提的是,2016年10月12日,一篇关于 Chromium 问题追踪的评论指出,谷歌的 Pepper 和 Native Client 团队已经被解散了。在2017年5月30日,谷歌宣布停止支持 PNaCl ,拥抱 WebAssembly。

需求

  • Native Client SDK,在 https://developer.chrome.com/native-client/sdk/download 下载
  • Python 2.7,确保 Python 可执行文件在 PATH 变量中,Python 3.x 还不支持。
  • Make, Windows 平台上,GNU Make 包含在 Native Client SDK 中。其他平台需要自行安装。

安装 SDK

首先下载 Native Client SDK,下载完成后解压 nacl_sdk.zip,以管理员身份打开命令提示符,进入 nacl_sdk 目录。

  1. 想要查看已经安装或未安装的 SDK 捆绑包,可以通过 list 命令。
    在 Mac/Linux 平台:

    $ cd nacl_sdk
    $ ./naclsdk list

    在 Windows 平台:

    > cd nacl_sdk
    > naclsdk list

    你应该会看到类似的输出:

    Bundles:
    I: installed
    *: update available
    
     I  sdk_tools (stable)
     I  vs_addin (dev)
     pepper_47 (post_stable)
     I  pepper_49 (stable)
     pepper_50 (beta)
     pepper_55 (beta)
     pepper_56 (dev)
     pepper_canary (canary)

    其中 I 表示已经安装的捆绑包,* 表示可以更新的捆绑包。
    post_stable 为前一个稳定版本
    stable 为稳定版,推荐追求稳定的普通用户使用,更新最慢。
    beta 为测试版,有一定新功能,但是可能会存在不稳定情况,适合喜欢尝鲜的朋友使用,更新速度一般。
    dev 为开发版,更新最快,新功能最多,但是可能非常不稳定,适合开发人员使用

  2. 使用 naclsdk update 命令下载推荐的捆绑包,他将会下载当前的 “stable” 捆绑包。
    在 Mac/Linux 平台:

    $ ./naclsdk update

    在 Windows 平台:

    > naclsdk update
  3. 如果想要安装指定的捆绑包,可以执行

    $ ./naclsdk update pepper_36
  4. 可以通过 naclsdk update --force 命令升级捆绑包
  5. 可以使用 naclsdk help 命令查看软件帮助。

可能是由于使用了网络工具,执行 naclsdk update 命令时遇到了下面的错误:

third_party.fancy_urllib.InvalidCertificateException: Host storage.googleapis.com returned an invalid certificate ([SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)):
To learn more, see http://code.google.com/appengine/kb/general.html#rpcssl

这是由于 HTTPS 证书引起的问题,我用的解决办法是将 HTTPS 替换为 HTTP。

打开 nacl_sdk\sdk_tools 目录下的 download.py 文件,修改 UrlOpen 方法为:

def UrlOpen(url):
  request = fancy_urllib.FancyRequest(url.replace("https://", "http://"))
  ca_certs = os.path.join(SCRIPT_DIR, 'cacerts.txt')
  request.set_ssl_info(ca_certs=ca_certs)
  #url_opener = urllib2.build_opener(
  #    fancy_urllib.FancyProxyHandler(),
  #    fancy_urllib.FancyRedirectHandler(),
  #    fancy_urllib.FancyHTTPSHandler())
  url_opener = urllib2.build_opener()
  url_opener.addheaders = [('User-agent', 'Mozilla/5.0')]
  return url_opener.open(request)

安装 vs_addin

刚更新下来的 nacl_sdk 没有 vs_addin,需要用命令 naclsdk update sdk_addin 进行安装(Win10 下需要管理员权限)。默认安装的 vs_addin 只支持 VS 2010 和 VS 2012,如果想要支持 VS 2017 则需要更改 install.pycreate_ppapi_platform.py 文件,增加两个文件夹,修改 PPAPI_Patch 文件夹里面的相关文件。

可以下载修改好的 vs_addin 文件,也可以根据需要自行修改。

然后需要设置环境变量 “NACL_SDK_ROOT” 指向 nacl_sdk (本文为 papper_49) 的路径,NACL_SDK_ROOT = D:\Thirdparty\nacl_sdk\pepper_49 ;环境变量 “CHROME_PATH” 指向 "Chrome.exe" 的路径,CHROME_PATH = C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

最后进入 sdk_addin 目录,执行 install 命令安装,安装完成后可以看到 Visual Studio 的解决方案平台在 x64x86 的基础上新增了 NaCl32NaCl64NaClARMPNaClPPAPI

更详细的信息请参看 官方文档

设置 Chrome

最后需要设置 Chrome 以启用 Native Client 支持:

  1. 在 Chrome 浏览器地址栏中输入"chrome://flags"
  2. #enable-nacl#enable-nacl-debug、及 #allow-nacl-socket-api 设为启用
    chrome_flags_nacl
  3. 在 Chrome 浏览器地址栏中输入"chrome://nacl",检查 nacl 是否启用成功
    chrome_flags_nacl

至此,PPAPI 插件开发环境配置完成!!!

标签: Pepper Plugin API, 插件, NPAPI, PPAPI, Chrome, Google Native Client SDK

已有 4 条评论

  1. karedem

    thanks! Has a great effect on me

  2. ouy

    安装 vs_addin 如果想要支持 VS 2017 则需要更改 install.py 和create_ppapi_platform.py 文件,增加两个文件夹,修改 PPAPI_Patch 文件夹里面的相关文件
    是否可以提供一下这个修改后支持 vs2017 几个文件,谢谢 ouydon1@163.com

  3. ouy

    不好意思没有看仔细,您已经提供了

  4. kuli

    安装 vs_addin 如果想要支持 VS 2017 则需要更改 install.py 和create_ppapi_platform.py 文件,增加两个文件夹,修改 PPAPI_Patch 文件夹里面的相关文件
    能详细说明一下怎么改配置吗 想配2019的不知道怎么弄

添加新评论