linuxwebkit編譯
① WebKit嵌入式移植
蘋果公司在設計WebKit之時加入了太多Mac OS X平台的獨有事物,這給向其它系統的移植造成了很大障礙。不過,由於WebKit出色的開源特性,這些障礙正在被不斷克服。
WebKit是Mac OS X v10.3及以上版本所包含的軟體框架(對v10.2.7及以上版本也可通過軟體更新獲取)。同時,WebKit也是Mac OS X的Safari網頁瀏覽器的基礎。WebKit是一個開源項目,主要由KDE的KHTML修改而來並且包含了一些來自蘋果公司的一些組件。
傳統上,WebKit包含一個網頁引擎WebCore和一個腳本引擎JavaScriptCore,它們分別對應的是KDE的KHTML和KJS。不過,隨著JavaScript引擎的獨立性越來越強,現在WebKit和WebCore已經基本上混用不分(例如Google Chrome採用V8引擎,卻仍然宣稱自己是WebKit內核)。
Webkit的優勢是速度快,而IE的優勢是兼容性好。
android本來自帶了webkit瀏覽器,但是要對其進行custom就需要android源代碼才行, 但是在沒有源碼的情況下,那麼就需要用到ndk了,比如,我是在xoom上做custom webkit的。
1、雖然ndk提供的庫很少,而且沒有skia,但是好在有bitmap,這樣顯示慢了點,沒有硬加速,但不是不可能。
2、webkit需要的第三方庫,freetype,png,jpeg,sqlite3等雖然android源碼中有,但是ndk沒有開放,因此所有的第三方庫,freetype,png,jpeg,sqlite3,cairo,curl,fontconfig,pixman,iconv等都需要用ndk cross-compile成靜態庫,然後鏈接到最終的動態庫中。
3、選擇iconv是icu太大,而且沒有多語言的需求,選擇cairo+pixman是skia的移植性不好,而且cairo支持很多種backend。
4、編譯第三方庫需要用到autoconfig,ndk中有如何生成交叉編譯鏈的文檔,然後在configure時使用這個工具鏈就可以了,但是android用到的是bionic庫,因此會有很少的地方需要修改,有些庫也不能生成test程序,但是靜態庫是沒問題的。
5、利用ndk生成的交叉工具鏈,在加上webkit自帶的cmake編譯系統,生成webkit的動態庫是沒有問題的,當然是webkit的內核,而且有些平台相關的部分代碼需要修改。
6、但是只要是以linux平台為基礎,修改還是很容易的,我移植的webkit是先移植到linux平台上,然後移植到android平台上的,所以修改相對少了很多,但是修改大多都在WebCore/platform下,在選擇了的平台相關庫後,做相應的配置和修改。
7、其次是在WebKit目錄,這個主要是支持和使用WebCore,因此在需求不是整個瀏覽器,而只是正常地顯示網頁時,還是可以寫的比較簡單的。
③ 我現在有一個自己定製的linux系統,自己也編譯好了webkit,怎麼樣使系統運行後自動運行webkit瀏覽器並顯示
編譯完webkit後有個叫gtklauncher 的程序。你可以加入到啟動腳本中。
不知道你定製的linux系統是在PC上跑還是在板子上跑。啟動腳本跟個人定製有區別。像我們公司就是在/etc/init.d/rcSBB 這個腳本里添加命令。你可以嘗試在/etc/profile、/etc/rcSBB、/etc/rcS、/etc/rc 裡面添加 /usr/bin/gtklauncher &
加 & 就是後台運行了,不會佔用 前台。
當然,你直接在命令行里輸入也可以啟動。
④ webkit內核源碼是什麼寫的
瀏覽器最核心的部分是渲染引擎(Rendering Engine),我們一般習慣稱之為「瀏覽器內核」,其負責解析網頁語法(如HTML、JavaScript)並渲染、展示網頁。因此,所謂的瀏覽器內核通常也就是指瀏覽器所採用的渲染引擎,渲染引擎決定了瀏覽器如何顯示網頁的內容以及頁面的格式信息。不同的瀏覽器內核對網頁編寫語法的解析也有所不同,因此同一網頁在不同的內核瀏覽器里的渲染、展示效果也可能不同。
主流瀏覽器內核分類:瀏覽器內核種類繁多,商用的加上非商業的免費內核,大約有10款以上甚至更多,不過通常比較常見的大約只有以下4種,下面就簡單介紹一下。
Trident
Trident(又稱為MSHTML),是微軟的Windows搭載的網頁瀏覽器——Internet Explorer瀏覽器使用的內核(俗稱IE內核),該內核程序在1997年的IE 4中首次被採用,之後不斷地加入新的技術並隨著新版本的IE發布。Trident實際上是一款開放的內核,Trident引擎被設計成一個軟體組件(模塊),使得其他軟體開發人員很容易將網頁瀏覽功能加到他們自行開發的應用程序里,其介面內核設計相當成熟,因此才涌現出許多採用IE內核而非IE的瀏覽器(如Maxthon、軟媒的閃游瀏覽器、騰訊的TT、GreenBrowser等),但是Trident只能用於Windows平台。
由於IE本身的「壟斷性」而使得Trident內核在很長時間內都是一家獨大,微軟也在相當長一段時間內都沒有更新Trident內核,這就導致了兩個後果——一是Trident內核曾經幾乎與W3C標准脫節;二是Trident內核的大量Bug等安全性問題沒有得到及時解決。目前,微軟對Trident 排版引擎做了重大變動,除了加入新的技術之外,還增加了對網頁標準的支持。盡管這些變動已經在相當大的程度上落後了其他的排版引擎,如Gecko、 WebCore、KHTML及Presto。
Gecko
Gecko是開放源代碼、以C++編寫的網頁排版引擎,目前被Mozilla家族網頁瀏覽器以及Netscape 6以後版本瀏覽器所使用。這款軟體原本是由網景通訊公司開發的,現在則由Mozilla基金會維護。由於Gecko的特點是代碼完全公開,因此,其可開發程度很高,全世界的程序員都可以為其編寫代碼,增加功能。因為這是個開源內核,因此受到許多人的青睞,採用Gecko內核的瀏覽器也很多,這也是 Gecko內核雖然年輕但市場佔有率能夠迅速提高的重要原因。
Gecko排版引擎提供了一個豐富的程序界面以供與互聯網相關的應用程序使用,例如網頁瀏覽器、HTML編輯器、客戶端/伺服器等。雖然最初的主要對象是Mozilla的衍生產品,如 Netscape和Mozilla Firefox,但是現在已有很多其他軟體利用這個排版引擎。此外Gecko也是一個跨平台內核,可以在Windows、BSD、Linux和Mac OS X中使用。
Gecko是最流行的排版引擎之一,其流行程度僅次於Trident。使用Gecko引擎的瀏覽器有Firefox、網景6~9、SeaMonkey、Camino、Mozilla、Flock、Galeon、K-Meleon、Minimo、Sleipni、 Songbird、XeroBank。Google Gadget引擎採用的就是Gecko瀏覽器引擎。
Presto
Presto是一個由Opera Software開發的瀏覽器排版引擎,目前Opera 7.0~10.00版本使用該款引擎。Presto的特點就是渲染速度的優化達到了極致,它是目前公認的網頁瀏覽速度最快的瀏覽器內核,然而代價是犧牲了網頁的兼容性。
Presto實際上是一個動態內核,與Trident、Gecko等內核的最大區別就在於腳本處理上,Presto有著天生的優勢,頁面的全部或者部分都能夠在回應腳本事件時等情況下被重新解析。此外該內核在執行JavaScript時有著最快的速度,根據同等條件下的測試,Presto內核執行同等JavaScript所需的時間僅有Trident和Gecko內核的約1/3。不過,不足之處在於Presto是商業引擎,使用Presto的除了Opera以外,只剩下NDS Browser、Nokia 770網路瀏覽器等,這在很大程度上限制了Presto的發展。 Opera Widget引擎採用的就是Presto引擎。
WebKit
WebKit 是一個開放源代碼的瀏覽器引擎(Web Browser Engine),WebKit最初的代碼來自KDE的KHTML和KJS(它們均為開放源代碼,都是自由軟體,在GPL協議下授權)。所以WebKit也是自由軟體,同時開放源代碼。
除了Safari瀏覽器,Mac下還有OmniWeb、Shiira等人氣很高的瀏覽器。Google的 chrome也使用WebKit作為內核。 WebKit內核在手機上的應用也十分廣泛,例如Google的Android平台瀏覽器、 Apple的iPhone瀏覽器、Nokia S60瀏覽器等所使用的瀏覽器內核引擎,都是基於WebKit引擎的。 WebKit內核也廣泛應用於Widget引擎產品,包括中國移動的BAE、Apple的Dashboard以及Nokia WRT在內採用的均為WebKit引擎。
⑤ 在linux下怎麼打包直接運行的node-webkit桌面應用
打包一個雙擊就可以直接運行的node-webkit應用,需要有:自己做的項目文件、package.json的配置文件,還有下載下來的node-webkit。
一、打包一個可以運行 .nw文件
1、在要打包的項目的主頁面同一級目錄里建一個package.json的文件,它是用來配置運行窗口和應用信息的。
如下圖是我的項目,其中demo.html就是我運行這個應用時打開的頁面:
我的很簡單package.json文件內容如下,這2個是必備的。name可任意起,main就是你要運行的主頁文件名:
查看文本列印
{
"name": "music",
"main": "demo.html"
}
2、將整個文件夾zip打包成 xxx.nw文件,一定要是zip打包,其他是不行的,我就在這里搞錯了。
我的這個用命令壓縮是:zip -r MusicPlay.nw css demo.html images package.json script
生成的包:
打開是這樣的:
這樣可運行的 .nw文件就好了,這時可以測試一下是否成功。
兩種方法檢測:
1)可以直接拖拉這個壓縮包拖到下載的node-webkit文件夾里的nw上面運行;
2)可以用命令行運行:
先cd到node-webkit文件目錄下,我的是:cd /opt/node-webkit-v0.9.1-linux-ia32
然後輸入:./nw /home/shara/workplace/php/MusicPlayerHTML5/MusicPlay.nw
這樣它就會運行了,成功時長這樣,我的東西還沒做好,所以長好醜,忽略吧:
二、將這個MusicPlay.nw和node-webkit文件下的 nw 一起創建一個文件:cat MusicPlay.nw nw > app && chmod +x app
在node-webkit文件夾里得到這個東西:
最後將node-webkit文件夾里的libffmpegsumo.so 和 nw.pak 跟這個app放到一個文件夾里,把這個文件夾放別人的機子上,它也可以直接雙擊運行這個app文件了。