打造自己的chrome for android

轉自 點擊打開鏈接

chromium移植已經接近尾聲,正在衝刺beta版本。不過越往後面,越是一些難啃的骨頭。雖然背靠chromium這座大山,但是網頁的複雜性超乎想象。更鬱悶的是,有些BUG在chrome for android上沒有,但在我們的瀏覽器上存在。因此經常會有這樣的質疑:人家的chrome瀏覽器好好的,你做的瀏覽器爲什麼會有這樣的問題。面對這樣的質疑,真是有苦說不出。在有些人看來,別人都把源代碼開放出來了,超過他們是理所當然的。沒有辦法,碰到難啃的骨頭只能迎難而上了。好在chrome for android(V25之後的版本)開始支持自行定製了,雖然沒法調試全部的代碼,但是部分代碼還是可以調試的。這樣在分析我們和chrome瀏覽器在代碼執行路徑上的差異,也許能夠提供一種思路。下面就談談如何構建自己的chrome for android。



1. 使用您的android設備下載chrome beta for android。需要注意的是,chrome beta for android無法在Google Play中搜索到,需要需要通過這個鏈接來下載。國內的應用商店也一般有,這裏就不詳細說了。

2. 打開您的android設備上的chrome beta for android,地址欄中輸入chrome://version

3. 記下Build ID(版本號ID)後的那一長串數字。

4. 在PC機上訪問 http://storage.googleapis.com/chrome-browser-components/<BUILD_ID>/index.html。其中<BUILD_ID>爲步驟3中的ID。下載該頁面所列的文件。以下將以$CHROME_PREBUILT指代所存放的目錄。

5. 下載與chrome beta for android版本對應的chromium源碼。下面就以$CHROMIUM_SRC指代chromium源碼的src目錄

6. build出自己的libchromeview.so庫
cd $CHROMIUM_SRC
mkdir chrome-android-prebuilts
cp $CHROME_PREBUILT/chromeview_target.gyp chrome-android-prebuilts/libchromeview.gyp
mkdir -p out/Release
cp $CHROME_PREBUILT/libchrome_android_prebuilt.a out/Release
CHROMIUM_GYP_FILE="chrome-android-prebuilts/libchromeview.gyp" build/gyp_chromium
make libchromeview_prebuilt BUILDTYPE=Release

7. 解包官方chrome的apk
使用USB連接設備
cd $CHROME_SRC
mkdir out/apk
cd out/apk
adb pull $(adb shell pm path $CHROME_PACKAGE | sed ‘s/package:\([^\r ]\+\).*$/\1/g’)
將pull出的apk重命名爲Chrome.apk
apktool d Chrome.apk

注1:您也可以從網上下載Chrome for android,但要確保下載正確的版本

注2:apktool 可以從http://code.google.com/p/android-apktool/ 下載

8. 更新應用程序包
cp $CHROME_PREBUILT/change_chromium_package.py .
chmod a+x change_chromium_package.py
./change_chromium_package.py -u Chrome -p desired_package_name -a desired_app_name
cp $CHROMIUM_SRC/out/Release/lib.target/libchromeview_prebuilt.so libchromeview.so
arm-linux-androideabi-strip libchromeview.so
cp libchromeview.so $CHROMIUM_SRC/out/apk/Chrome/lib/armeabi-v7a

9. 重新打包和安裝apk
apktool b Chrome Chromium_unaligned.apk
簽名apk,爲了簡便起見,可以使用debug key:

jarsigner -sigalg MD5withRSA -digestalg SHA1 -keystore PATH_TO_ANDROID_SDK/.android/debug.keystore -storepass android Chromium_unaligned.apk androiddebugkey
zipalign -f -v 4 Chromium_unaligned.apk Chromium.apk
adb install -r Chromium.apk

到此,自有品牌的chrome瀏覽器就此誕生,您可以更換logo,修復chromium的bug等等。據http://www.techweb.com.cn/news/2012-03-15/1166933.shtml 這篇文章的說法,海豚瀏覽器在完全不修改chrome for android的libchromeview.so的情況下,將chrome內核完美接入到他們的產品中,至今沒有想明白是如何做到的。不得不佩服海豚瀏覽器的團隊。

BTW:chrome for android正式版已經升級到25.0.1364.123,使用上述的方法,在編譯libchromeview_prebuilt.so時存在鏈接錯誤,難道是google的疏忽?只有採用V26以上版本,上述過程纔沒有問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章