在前面的两篇文章中,分别介绍了如何下载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,可以参考这几个,但不知道是否都是开源的。