在上一篇文章<< Chromium for Android开源了 >>中谈到了Google已经完全开源了Chromium for Android,这样我们就完全可以开发与Chrome for Android媲美的Android浏览器了。通常浏览器的一些新特性和新功能会先出现在Chromium for Android上,稳定后才会出现在Chrome for Android上,如果我们基于Chromium for Android开发浏览器产品,在新特性和新功能方面不会落后于Chrome浏览器.

Chromium开源项目的代码及其庞大,也相当的复杂。对于Android开发人员,特别是UI开发人员来说,没有一个合适的IDE环境,会是一个非常痛苦的事情。我们通常是这样开发的,在sublime text中阅读、修改代码,使用chromium的构建系统build出apk,安装到手机,进行调试。对于native代码来说,这样的开发方式也不会有太多麻烦,因为native部分的代码通常修改很少。但如果主要进行UI的定制,这种开发方式就非常痛苦了。

为了应对这个问题,考虑如下方案:

  1. 采用Android Studio作为开发环境,从Chromium for Android抽取chrome模块的源码,加入Android project。
  2. native代码在chromium环境中build,作为so加入Android project
  3. 基础模块(base, content, net等)在chromium环境build为jar包,加入Android project
  4. content, chrome, ui等模块的资源文件加入Android library project

资源文件为什么不能直接都添加到Android project呢?因为命名空间的原因,比如content模块的资源的命名空间为org.chromium.content, chrome模块的资源的命名空间为org.chromium.chrome,所以需要建立不同的Android library project, 指定不同的包名。最后整个项目的结构如下:

browser|_ app|    |_ libs|    |_ src|         |_ main|              |_ aidl|              |_ assets|              |_ java|              |_ jniLibs|              |_ res|_ libraries|_ androidmedia_res|_ chrome_res|_ content_res|_ datausagechart_res|_ ui_res

注意事项:

  1. chromium项目的源码和资源有些是自动生成的,需要到out目录下去复制
  2. pak和dat等文件需要加入到assets目录,而且不能压缩
  3. aidl文件加入到main/aidl下,android studio会自动处理

实践证明,这种方案是行之有效的,请参考github上的项目: 365browser。在script目录下有从chromium项目同步代码和资源的脚本。

基于chromium for android开发Android浏览器相关推荐

  1. Android开发——Android手机屏幕适配方案总结

    0. 前言 Android的屏幕适配,即使得某一元素在Android不同尺寸.不同分辨率的手机上具备相同的显示效果,这个问题一直以来都是我们Android开发者不得不面对的问题.本文参考了很多前人的博 ...

  2. Android开发-Android studio自带模拟器使用中文拼音输入法

    Android开发-Android studio自带模拟器使用中文拼音输入法 搜狗输入法下载 搜狗输入法安装 修改模拟器语言 搜狗输入法下载 上篇文章中我们在Android studio中创建了X86 ...

  3. Android开发-Android使用指定的浏览器作为默认浏览器

    1 简介: 在Android设备上,在打开网页时,可以使用指定的浏览器来打开.本篇描述了这个功能的实现方法. 2 原理 我们知道,在Android应用开发时,可以由一个Activity跳转到另外的Ac ...

  4. Android开发-Android操作系统简介

    01.   系统简介 1.1  Android 名词 Android 一词的本义指 "机器人",同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统 ...

  5. Android开发-Android原生与WebView的js交互的实现

    前 言 一般在Android应用的开发过程中,一些核心的业务功能开发往往需要Android原生的开发,一些需要改动比较频繁的功能且不是核心的业务功能往往只需要在Android应用调用一个网页就行了.在 ...

  6. 微软尽然要采用谷歌Chromium开源项目开发Edge浏览器,你怎么看?

    目前微软已经确认要在未来的浏览器开发中采用谷歌的Chromium内核,而且还会降Edge浏览器功能移植过来,这意味着原来所坚持的EdgeHTML内核可能会被放弃,而且微软准备基于Chromium内核开 ...

  7. Android开发——Android四大组件

    Activity 技巧:当你想查找系统已有的某界面对应的清单文件中<action-name>.<data>.<category>等信息时,你可以先打开模拟器, 打开 ...

  8. android开发 android.view.View.OnClickListener和android.content.DialogInterface.OnClickListener冲突...

    android开发中,在导入android.content.DialogInterface.OnClickListener 或者android.view.View.OnClickListener的其中 ...

  9. Android开发 Android 软盘 遮一部分EditText

    目录 一.NestedScrollView/ScrollView造成EditText全遮住 windowSoftInputMode属性: 二.EditText被软盘遮住部分 一.NestedScrol ...

最新文章

  1. 漫谈时序设计(1)跨时钟域是设计出来的,而非约束出来的!
  2. python3 问题 No module named _sqlite3 解决方案
  3. Android 自定义Dialog背景透明及显示位置设置
  4. selenium python (八)定位frame中的对象
  5. MySql中如果某一列中含有NULL,那么包含该列的索引就无效了?
  6. Python之路_Day13
  7. app inventor调用图像识别_+AI场景,3步懂图像识别产品
  8. [算法] 麻将序数牌组合方案
  9. 第33课 打擂台 《小学生C++趣味编程》
  10. 浅谈Base64编码[转]
  11. 华为Mate40国行版18点08分开卖:要求12小时内必须卖完
  12. Kafka 分区备份实战
  13. 2星|《零工经济》:缺少对数据、事实、概括、分析,基本是流于表面的畅想...
  14. 蒙特卡洛估值几种不同的计算方式(Python)
  15. 平面设计ai教程笔记
  16. 2021年安全员-C证(安徽省)考试试卷及安全员-C证(安徽省)试题及解析
  17. 周志华:关于机器学习的一点思考
  18. Winform实现确认取消框
  19. 服务端性能测试入门指南
  20. 腾讯与360之争随笔 (12月21日,最后一次更新)

热门文章

  1. JavaScript 23 种设计模式之 4 抽象工厂模式
  2. flink实时数仓(三):cannel
  3. python pyc文件作用_Python中pyc文件的用途
  4. python pyc文件使用,使用pyinstaller逆向.pyc文件
  5. 祝愿大家新年快乐,祝愿祖国繁荣昌盛
  6. Java GC算法——日志解读与分析(GC参数基础配置分析)
  7. ubuntu对硬盘进行分区
  8. IAS39 和IFRS9 一般套期会计(Hedging Accounting)区别
  9. 如何写一手优美华丽的html代码--51RGB
  10. AMCL学习记录(1)-坐标系转换