磕磕碰碰的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.爬上博客園來發個帖子,看有沒有人有辦法!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM