基于chromium for android开发Android浏览器

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

大家好,又见面了,我是你们的朋友全栈君。

在上一篇文章<< 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项目同步代码和资源的脚本。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146479.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月15日 上午7:40
下一篇 2022年5月15日 上午7:40


相关推荐

  • curl调用单笔接口结合shell循环实现批量操作

    curl调用单笔接口结合shell循环实现批量操作shell脚本相关获取年月日时分秒来设置请求的时间echo$(date+%Y%m%d%H%M%S)请求中的随机数生成,根据请求报文格式得知

    2022年7月24日
    8
  • mysql 自己一些平时用不到的函数

    mysql 自己一些平时用不到的函数

    2021年8月12日
    60
  • jdbctype=null_could not get jdbc connection

    jdbctype=null_could not get jdbc connectionresultMap中映射没注意jdbcType类型直接报错:Cause:org.apache.ibatis.builder.BuilderException:ErrorresolvingJdbcType.Cause:java.lang.IllegalArgumentException:Noenumconstantorg.apache.ibatis.type.JdbcType.int随后检查XML文件映射问题,发现应该是INTEGER,jdbcType中没有int。附上MyBat.

    2022年10月20日
    2
  • Linux面试题(2020最新版)[通俗易懂]

    Linux面试题(2020最新版)[通俗易懂]文章目录Linux概述什么是LinuxUnix和Linux有什么区别?什么是Linux内核?Linux的基本组件是什么?Linux的体系结构BASH和DOS之间的基本区别是什么?Linux开机启动过程?Linux系统缺省的运行级别?Linux使用的进程间通信方式?Linux有哪些系统日志文件?Linux系统安装多个桌面环境有帮助吗?什么是交换空间?什么是root帐户什么是LILO?什…

    2022年4月27日
    38
  • mysql的启动命令_mysql的配置和启动命令

    mysql的启动命令_mysql的配置和启动命令一.mysql配置文件在linux系统下的位置使用命令查询位置:1.找到安装位置whichmysql->/usr/bin/mysql2.接下来就可以针对这个目录通过一些命令查看配置文件在哪了,如下/usr/local/bin/mysql–verbose–help|grep-A1’Defaultoptions’得到以下结果:服务器首先读取的是/etc/mysql/m…

    2022年5月21日
    42
  • PyCharm2018专业版激活方式

    PyCharm2018专业版激活方式原文出处 裸睡的猪激活成功教程补丁下载 JetbrainsCra 3 1 release enc jarPyCharm20 专业版下载 pycharm professional 2018 2 4 最近很多同学反馈 pycharm2018 2 1 版本无法使用补丁激活或闪退问题 今天也是给大家带来新的激活码 原来使用激活码激活的同学也可以换成补丁激活了 激活前准备工作激活前请先关闭 pycharm 修改配

    2026年3月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号