自己編譯安卓webkit
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,因此在需求不是整個瀏覽器,而只是正常地顯示網頁時,還是可以寫的比較簡單的。
❷ 怎麼編譯自己的WebKit
可以,直接下載Webkit 在編譯的時候 選擇編譯for Qt 就行了。 但是 先提醒你,Webkit 是我見過所有的庫中,最難編譯的。做好心理准備。50個人編譯Webkit 會有50個不同的錯誤。
❸ MAC OSX用Xcode編譯webkit,有詳細的步驟嗎
1.使用Xcode軟體。Xcode是一個蘋果系統上的集成開發環境(IDE),就是說用Xcode就能編寫c語言程序,並編譯運行。也能開發ios程序等,是一種軟體。在windows上類似這種能編c語言的還有微軟出的visual studio,和其他免費的一些如codeblocks,c-free等。
在Xcode中編譯運行C/C++的操作步驟:
1)打開Xcode,在歡迎界面點擊Create a new Xcode project。
2)彈出一個對話框,在左側欄選擇Mac OS X分類的Application,右側選擇Command Line Tool,點擊Next。
3)在Proct Name填寫項目名稱,如HelloMac,其餘默認即可(type里也可以選擇C或C++),點擊Next後選擇路徑並點擊Create完成項目創建。
4)在Xcode主界面左側點擊main.m,把代碼替換成C/C++的代碼,點擊左上角的Run按鈕即可編譯運行,界面下方會彈出控制台顯示運行結果。
❹ 關於在Windows下編譯webkit內核的詳細資料
webkit.org上已經有完善的資料了
http://www.webkit.org/building/build.html
❺ 請教Android內置應用Browser編譯成APK的問題
在Eclipse創建一個Android工程,把android.webkit目錄下的java代碼拷貝過來;
將/home/roger/a41/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/src/core/java/android/webkit下面的EventLogTags.java也拷貝到自己的工程;
因為android.webkit下的類會使用SDK中非公開的API,我們需要解決編譯錯誤:
/home/roger/a41/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar
/home/roger/a41/out/target/common/obj/JAVA_LIBRARIES/core_intermediates/classes.jar
/home/roger/a41/out/target/common/obj/JAVA_LIBRARIES/bouncycastle_intermediates/classes.jar
創建一個User Library,並且勾選System Library的選項;
加入以下Jar包:
在Java Build Path/Order and Export把創建的庫放在最前面;
因為在我們應用中的android.webkit包跟SDK中的重名,所以我們需要更改包名,可以改成android.webkit2;
我們需要重新編譯libchromium_net.so和libwebcore.so,並且使用另外的名字,並且把其代碼中使用的android/webkit/ JNI路徑改成android/webkit2/保證JNI的正確性:
在/home/roger/a41/external/chromium下面,把所有源文件的android/webkit/路徑改成android/webkit2/;
打開/home/roger/a41/external/chromium/Android.mk,修改庫名為libchromium_net2,並且加多一行「LOCAL_MODULE_TAGS := optional「,具體內容見後;
重新編譯chromium_net,得到libchromium_net2.so;
在/home/roger/a41/external/webkit/Source/WebKit/android下面,把所有源文件的android/webkit/路徑改成android/webkit2/;
打開/home/roger/a41/external/webkit/Android.mk,將庫名改成libwebcore2.so,並且加多一行「LOCAL_MODULE_TAGS := optional「(需要修改兩個地方,靜態庫編譯和動態庫編譯),另外還需要把導入庫libchromium_net改成libchromium_net2,具體內容見後;
重新編譯webcore,得到libwebcore2.so;
接下來我們可以把修改後的libwebcore2.so和libchromium_net2.so push到手機的rom裡面,假設路徑是/data/local(如果沒有寫許可權,用Root Explorer修改);
然後我們需要修改Java的代碼,讓它去載入我們自己的庫,修改的地方位於JniUtil.java和WebViewCore.java,具體內容見後(載入順序需要改變,先載入libchromium_net2.so再載入libwebcore2.so);
最後加上我們自己的Test Shell的代碼,運行就OK了,如果只修改了C++的代碼,重編譯後再Push到手機,然後重新運行Test Shell就可以馬上生效,Java的代碼可以在Eclipse裡面很方便的調試,C++的代碼理論上也可以通過GDB進行調試;
❻ 如何vs2008編譯webkit
不要猜了,編譯生成的右邊有選項是生成發布版(Release)還是除錯版(Debug),根據你的需要選擇,初期默認是Debug,你可以改成Release。發布版的話生成和引用都在release目錄里,除錯版都在debug里
❼ 如何修改android的webkit內核
1. 找到你的toolchain對應的gdb,在模擬器上是arm-eabi-gdb,在prebuild下,把它的目錄加到PATH裡面
export PATH=$ANDROID_SRC/prebuilt/linux-x86/tootlchain/arm-eabi-4.4.0/bin:$PATH
或者直接加到~/.bashrc裡面
2 執行配置腳本
cd$ANDROID_SRC
source build/envsetup.sh
3 啟動模擬器,運行瀏覽器
l gdbclient app_ process :5039 browser
此時就能看到gdb順利啟動起來了(盡管有warning),此時就可以使用你熟悉的gdb命令了
看到
15 ldmdf sp! {r4,r7}
Currentlanguage: auto;current asm
4 設置斷點
bFrameLoaderClientAndroid.cpp:868
5 執行
c
6 訪問一個網址,就可以看到gdb斷點了,enjoy it!
❽ 怎樣自行開發一個Webkit內核的瀏覽器
首先為什麼需要使用webkit或chrome瀏覽器內核?本人之前一直使用IE控制項中的IE瀏覽器,對於簡單的開發已經夠用了,但是IE有它的詬病,特立獨行,對HTML5新特性兼容性非常差,由於近期在研究HTML5以及2.5D和3D地圖相關技術,所以一開始就摒棄了使用IE內核的想法。關於windows下使用chrome瀏覽器內核或webkit內核,已經專研了好幾天,一直在碰壁,我相信也有不少網友也跟我一樣,查閱了幾天都沒有任何進展,下面我說說這幾天查閱資料遇到的問題:
(1)關於webkit或chrome相關源碼都需要編譯,而且編譯環境相當復雜,很多時候按照文章流程走,要麼走不通,要麼出一連串解決不了的錯誤,最終心灰意冷,直到放棄(大多數搞windows開發的在編譯這塊都缺少相關經驗,不比linux開發員);
(2)能找到人家已經編譯好的webkit或chrome內核庫,但是不是最新的庫,很多都是2012年之前的,太老的,對於近幾年HTML5的飛速發展,我想那些陳舊的庫已經不再適用了。