Jcef內嵌瀏覽器windows版本的編譯及使用

來源:互聯網
上載者:User

標籤:window   cal   simple   vs2015   編碼   沒有   https   ++   成功   

背景

  去年年底接到的新需求,需要將原來用Swing做的案頭應用中的一個功能做成Web版的,並且要整合到原應用中,換言之就是要使用內嵌瀏覽器。最開始考慮的是JavaFx提供的WebView,優點是不需要其他第三方庫,jdk1.7開始整合。但是開發完成之後發現兩個比較嚴重的問題,一是介面有一個比較複雜的曲線圖會嚴重卡頓,另一個是有幾率會導致虛擬機器崩潰,並且速度上也不是很讓人滿意。最後只能考慮換一個內嵌瀏覽器架構,然後就找到jcef,基於chrome,速度相容性都很好。

  關於jcef就不多作介紹,不瞭解的可以戳這裡java-cef,本文主要講解jcef的編譯過程,由於產品只支援windows平台使用的是32位的jre,所以只編了win32的版本,64位編譯過程基本相同,只需要改變下參數。

編譯環境
  • CMake 2.8.12.2或者更新的版本(我用的免裝版,bin目錄要手動設定環境變數)
  • Git
  • Visual Studio 2015(官網推薦2015,原因是開發人員使用的就是2015版本,實測VS2010和VS2013編譯均會報錯)
  • Java 1.8 32位 (官網寫的是1.7或者1.8,實際上使用1.7編譯java部分會有語法錯誤,可以修改源碼規避,建議使用1.8,編譯64位版本使用64位的jdk)
  • Python 2.6或者更新的版本(不支援Python3)
編譯過程

  1. 源碼下載    

  使用Git將下載jcef源碼,clone地址:https://bitbucket.org/chromiumembedded/java-cef.git,當然也可以直接下載Jcef源碼。這裡建議使用Git Clone,因為在使用CMake構建的時候需要用到.git目錄下面的檔案中當前節點的資訊來構建jcef_version.h標頭檔,如果不是git clone的代碼,沒有git相關的檔案編譯會出錯,這個應該是可以通過修改編譯指令碼規避,把通過git檔案擷取的資訊寫死,沒有試過,不細表。    

    

  2. CMake構建VS工程

  在源碼目錄下建立新目錄jcef_build(不可隨意命名),開啟DOS進入到新目錄中,輸入命令cmake -G "Visual Studio 14 2015" ..,斷行符號開始構建。此處有坑,我編的時候新裝的VS2015這裡報錯,找不到編譯器,研究了老半天最後找到一句話,VS2015預設安裝不包含C++支援……當時整個人都不好了。如果要編64位的話命 令換成這樣:cmake -G "Visual Studio 14 Win64" .. 。這裡還有一個注意的地方是,這個過程會自動去下載當前Jcef對應的CEF的版本,若果下載不成功可以自己下載之後放到/java-cef/third_party/cef目錄中。CEF版本號碼可以從源碼目錄下的CMakeLists.txt檔案中找到。

CEF:http://opensource.spotify.com/cefbuilds/index.html  (經常打不開,我FQ才能穩定開啟)

 

CMake構建後的C++項目: 

  

  3. VS構建

  使用VS開啟jcef_build中的jcef.sln檔案,選擇"產生-->組態管理員-->修改為Release和Win32",然後選擇"產生-->產生解決方案",然後等待構建完成。

  4. 編譯java代碼

  使用dos進入到源碼目錄的tools目錄裡,執行命令compile.bat win32

  5. 測試回合

  同樣是tools目錄,執行run.bat win32 Release simple或者run.bat win32 Release detailed,瀏覽器正常運行,編譯成功。

    

  6. 打包

  tools目錄下執行 make_distrib.bat win32,源碼目錄下會自動建立打包目錄binary_distrib,裡麵包含了api文檔,瀏覽器Demo,使用到的jar和dll以及資源檔。

使用方法

  需要用到的jar: \java-cef\binary_disrib\win32\bin裡面的相關jar包

  

  動態庫以及資源檔等:\java-cef\binary_disrib\win32\bin\lib\win32裡面的所以內容

   

  編碼時匯入jcef即可編譯成功,運行時classpath指定上述jar包,將上面的dll等檔案win32目錄下的所以內容放在一個目錄中,然後將其指定為-Djava.library.path的值即可,可以參考\java-cef\binary_distrib\win32裡面的run.bat。

一鍵編譯指令碼

  build_jcef.bat win32一鍵編譯,指令碼是按照可編譯64位寫的,參數用win64就行了,不過筆者沒試過......  

@echo on@rem 設定路徑set SRC_PATH=D:\java-cefset VS_PATH=C:\Develop\VS2015if "%1" == "" (echo ERROR: Please specify a target platform: win32 or win64set ERRORLEVEL=1goto end)cd /d %SRC_PATH%mkdir %SRC_PATH%\jcef_buildcd /d %SRC_PATH%\jcef_build@rem CMake構建cmake -G "Visual Studio 14 2015" ..@rem VS編譯@echo VS Building Start%VS_PATH%\Common7\IDE\devenv.exe %SRC_PATH%\jcef_build\jcef.sln /rebuild "Release|%1"@echo VS Building End@rem 編譯java部分cd /d %SRC_PATH%\tools call compile.bat %1@rem 打包call make_distrib.bat %1:endExit /B
View Code

 

 結語

  從編譯到開發,以及解決各種bug,jcef的資料太少,走過不少彎路。不過項目總算是順利完成交付,這裡做個筆記,也分享給需要的人,希望能有所協助。

 

Jcef內嵌瀏覽器windows版本的編譯及使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.