定制Android版本的chromium之笔记

在前面的两篇文章中,分别介绍了如何下载Google Chromium源码。以及编译Android版本的chromium浏览器

-------------------------------------------------------------------------------------------------------------

准备知识

在实际的开发中,如果直接在chrome的源码上修改代码,既费时也费力,在github找了一个可以直接用 Android studio 编辑调试的chrome的代码,见:Chromium-Android。可以直接在Android studio中打开这个工程,可以直接编译通过,在华为手机(Android 8.1版本)上运行没问题。

github上有另外一个Android版本的chromium,但是版本比较老,可以参考一下,AndroidChromium

以及几个是感觉不错的参考文档。

chromium 的开发人员文档 

Chromium docs 

 the Chromium build system supports Android app bundles

github版本的chromium源码,这个源码之能用来查看学习,不能用来编译,因为下载到本地编译时会缺少库文件,

Chrome Custom Tabs, 这个例子值得学习,该网站上提供的例子,在APP中直接调用chrome浏览器的内核,但是具体怎么实现的现在还不清楚。

----------------------------------------------------------------------------------------------------------------------

开始定制

需求

(1)将Chromium编译成一个Android app程序,打开后,默认为指定的网站,没有工具栏,没有地址框,也没有第一次运行的开始使用界面。

(2)打包成app发布在应用市场,需要修改包名,修改app名称,修改版本号,打包签名。

(3)默认打包好的chromium是不能播放mp4格式视频的,解决这个bug。

修改步骤

(1)修改包名

文件:chrome/android/BUILD.gn

manifest_package = "org.chromium.chrome"
test_manifest_package = "org.chromium.chrome.tests"

(2)修改版本号

文件:chrome/android/java/AndroidManifest.xml

android:versionCode="1"
android:versionName="0.1.0"

这里需要说明的是:修改版本号的最正确的方法是在文件:chrome/VERSION  文件中,修改这个文件后,整个chromium的版本号都变了,但是这在编译的时候会出错,查找了一下,也没有找到原因,而且看Brave(chromium浏览器的变体)的版本号也只是修改了app的外层版本号,其内的版本号还是chromium的版本号。

----------------------------------
(3)去掉工具栏,地址框等。
chrome/android/java/res/layout/control_container.xml
chrome/android/java/res/values-sw600dp/dimens.xml
chrome/android/java/res/values/dimens.xml


---------------------------
(4)屏蔽第一次使用的界面
chrome/android/java/res/layout/account_signin_view.xml
chrome/android/java/res/layout/fre_data_reduction_proxy.xml
chrome/android/java/res/layout/fre_tosanduma.xml
chrome/android/java/src/org/chromium/chrome/browser/firstrun/AccountFirstRunFragment.java 
chrome/android/java/src/org/chromium/chrome/browser/firstrun/DataReductionProxyFirstRunFragment.java
chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
---------------------------------------

(5)修改app的logo
chrome/android/java/res/mipmap-XX 等
chrome/android/java/res_chromium/drawable-XX 等


(6)修改app名字
文件:chrome/android/java/res_chromium/values/channel_constants.xml


(7)修改首页地址
文件:chrome/android/java/src/org/chromium/chrome/browser/UrlConstants.java

编译Android版本的chromium浏览器文章中给的args.gn文件的配置是默认的配置,这个版本是不能播放mp4的视频的,但是可与播放youtube的视频,当初猜到了是视频解码的问题,MP4的视频解码是h264,因此重新执行命令:gn args out/Default,并配置如下:

# args.gn文件
target_os = "android"
target_cpu = "arm"
enable_remoting = false
is_debug = false
is_official_build = true
is_component_build = false
use_official_google_api_keys = false
enable_resource_whitelist_generation = false
enable_nacl = false
remove_webcore_debug_symbols = false
proprietary_codecs = true
ffmpeg_branding = "Chrome"
android_channel = "stable"

#解决不能播放MP4格式的视频问题
use_openh264=true chrome_pgo_phase=0 full_wpo_on_official=true
#rtc_initialize_ffmpeg = true
rtc_use_h264  = true

#解决签名的问题
android_keystore_name = "hello"
android_keystore_password = "hello"
android_keystore_path = "//build/android/hello-app.jks"

附言

这个文章是近两个月的收获,希望能给大家来点干活,编译chromium浏览器,遇到了很多问题,但最后都一一解决了。

最后贴几个很有用的网站:

bromite浏览器,这个浏览器是chromium的另一个变体,并开源了编译这个浏览器的步骤,并且给了 args.gn 文件。我按照参考完全编译了一遍,是可行的。

7 Best Chromium Browsers for Android (2018),这个网站给出了7个最好用的chromium变体浏览器,如果想修改chromium,可以参考这几个,但不知道是否都是开源的。

猜你喜欢

转载自blog.csdn.net/gs344937933/article/details/86658192