打造自己的chrome for android
2014-02-09 21:37
567 查看
转自 点击打开链接
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以上版本,上述过程才没有问题。
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以上版本,上述过程才没有问题。
相关文章推荐
- 打造自己的chrome for Android
- 打造自己的ROM--for Android(附字体替换教程)
- android 用mvp模式来架构自己的app+打造Recyclerview万能适配器
- Android 打造自己的个性化应用(三):应用程序的插件化
- Android 使用Vitamio打造自己的万能播放器(9)―― 在线播放 (在线电视)
- 使用Vitamio打造自己的Android万能播放器(5)——在线播放(播放优酷视频)
- 使用Vitamio打造自己的Android万能播放器(12)—— 播放网络视频缓冲处理
- Chrome mobile for Android 连接PC版Chrome远程调试(Android 移动端连接PC版Chrome远程调试 )
- Android应用开发笔记——打造自己的标签栏
- 根据牛腩老师的mono for android 视频,自己用vs2017的xamarin for android高仿了一个登入界面跳转主界面的程序
- 打造自己的Android源码学习环境之五:编译Android源代码
- 使用Vitamio打造自己的Android万能播放器(2)—— 手势控制亮度、音量、缩放
- 使用Vitamio打造自己的Android万能播放器(10)—— 本地播放 (缩略图、视频信息、视频扫描服务)
- Tomcat+MySQL为自己的APP打造服务器(3-1)Android 和 Service 的交互之GET方式
- ARC Welder——Android 模拟器——App Runtime for Chrome
- Android视频框架 Vitamio 打造自己的万能播放器
- 使用Vitamio打造自己的Android万能播放器(5)——在线播放(播放优酷视频)
- 使用Vitamio打造自己的Android万能播放器(2)—— 手势控制亮度、音量、缩放
- 使用Vitamio打造自己的Android万能播放器(12)—— 播放网络视频缓冲处理
- Android 打造自己的个性化应用(一):应用程序换肤主流方式的分析与概述