基于chromium for android开发Android浏览器
在上一篇文章<< 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的定制,这种开发方式就非常痛苦了。
为了应对这个问题,考虑如下方案:
- 采用Android Studio作为开发环境,从Chromium for Android抽取chrome模块的源码,加入Android project。
- native代码在chromium环境中build,作为so加入Android project
- 基础模块(base, content, net等)在chromium环境build为jar包,加入Android project
- 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
注意事项:
- chromium项目的源码和资源有些是自动生成的,需要到out目录下去复制
- pak和dat等文件需要加入到assets目录,而且不能压缩
- aidl文件加入到main/aidl下,android studio会自动处理
实践证明,这种方案是行之有效的,请参考github上的项目: 365browser。在script目录下有从chromium项目同步代码和资源的脚本。
基于chromium for android开发Android浏览器相关推荐
- Android开发——Android手机屏幕适配方案总结
0. 前言 Android的屏幕适配,即使得某一元素在Android不同尺寸.不同分辨率的手机上具备相同的显示效果,这个问题一直以来都是我们Android开发者不得不面对的问题.本文参考了很多前人的博 ...
- Android开发-Android studio自带模拟器使用中文拼音输入法
Android开发-Android studio自带模拟器使用中文拼音输入法 搜狗输入法下载 搜狗输入法安装 修改模拟器语言 搜狗输入法下载 上篇文章中我们在Android studio中创建了X86 ...
- Android开发-Android使用指定的浏览器作为默认浏览器
1 简介: 在Android设备上,在打开网页时,可以使用指定的浏览器来打开.本篇描述了这个功能的实现方法. 2 原理 我们知道,在Android应用开发时,可以由一个Activity跳转到另外的Ac ...
- Android开发-Android操作系统简介
01. 系统简介 1.1 Android 名词 Android 一词的本义指 "机器人",同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统 ...
- Android开发-Android原生与WebView的js交互的实现
前 言 一般在Android应用的开发过程中,一些核心的业务功能开发往往需要Android原生的开发,一些需要改动比较频繁的功能且不是核心的业务功能往往只需要在Android应用调用一个网页就行了.在 ...
- 微软尽然要采用谷歌Chromium开源项目开发Edge浏览器,你怎么看?
目前微软已经确认要在未来的浏览器开发中采用谷歌的Chromium内核,而且还会降Edge浏览器功能移植过来,这意味着原来所坚持的EdgeHTML内核可能会被放弃,而且微软准备基于Chromium内核开 ...
- Android开发——Android四大组件
Activity 技巧:当你想查找系统已有的某界面对应的清单文件中<action-name>.<data>.<category>等信息时,你可以先打开模拟器, 打开 ...
- android开发 android.view.View.OnClickListener和android.content.DialogInterface.OnClickListener冲突...
android开发中,在导入android.content.DialogInterface.OnClickListener 或者android.view.View.OnClickListener的其中 ...
- Android开发 Android 软盘 遮一部分EditText
目录 一.NestedScrollView/ScrollView造成EditText全遮住 windowSoftInputMode属性: 二.EditText被软盘遮住部分 一.NestedScrol ...
最新文章
- 漫谈时序设计(1)跨时钟域是设计出来的,而非约束出来的!
- python3 问题 No module named _sqlite3 解决方案
- Android 自定义Dialog背景透明及显示位置设置
- selenium python (八)定位frame中的对象
- MySql中如果某一列中含有NULL,那么包含该列的索引就无效了?
- Python之路_Day13
- app inventor调用图像识别_+AI场景,3步懂图像识别产品
- [算法] 麻将序数牌组合方案
- 第33课 打擂台 《小学生C++趣味编程》
- 浅谈Base64编码[转]
- 华为Mate40国行版18点08分开卖:要求12小时内必须卖完
- Kafka 分区备份实战
- 2星|《零工经济》:缺少对数据、事实、概括、分析,基本是流于表面的畅想...
- 蒙特卡洛估值几种不同的计算方式(Python)
- 平面设计ai教程笔记
- 2021年安全员-C证(安徽省)考试试卷及安全员-C证(安徽省)试题及解析
- 周志华:关于机器学习的一点思考
- Winform实现确认取消框
- 服务端性能测试入门指南
- 腾讯与360之争随笔 (12月21日,最后一次更新)
热门文章
- JavaScript 23 种设计模式之 4 抽象工厂模式
- flink实时数仓(三):cannel
- python pyc文件作用_Python中pyc文件的用途
- python pyc文件使用,使用pyinstaller逆向.pyc文件
- 祝愿大家新年快乐,祝愿祖国繁荣昌盛
- Java GC算法——日志解读与分析(GC参数基础配置分析)
- ubuntu对硬盘进行分区
- IAS39 和IFRS9 一般套期会计(Hedging Accounting)区别
- 如何写一手优美华丽的html代码--51RGB
- AMCL学习记录(1)-坐标系转换