基于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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数学建模中的选址问题_数学建模停车场规划问题

    数学建模中的选址问题_数学建模停车场规划问题选址问题:是指在规划区域里选择一个或多个设施的位置,使得目标最优。四个要素:设施、规划区域、位置(距离)、目标设施:按照设施的空间维度划分,可以将选址问题分为:1.立体选址问题:设施的高度不能被忽略,如集装箱装箱问题。2.平面选址问题:设施的长、宽不能被忽略,如货运站的仓位布局问题。3.线选址问题:设施的宽度不能被忽略,如在仓库两边的传送带布局问题。4.点选址问题:设施可以…

    2025年11月27日
    4
  • 国产的FPGA_能不能长点心

    国产的FPGA_能不能长点心关注、星标公众号,直达精彩内容FPGA作为嵌入式必备的一个硬件,国产的产品也正在逐渐渗透工程师的生活之中。不过tzgok认为,目前国产FPGA还有几个问题非常令人困扰,并发出评论表示“国产…

    2025年11月11日
    7
  • Redis学习——Redis持久化之AOF备份方式保存数据

    新技术的出现一定是在老技术的基础之上,并且完善了老技术的某一些不足的地方,新技术和老技术就如同JAVA中的继承关系。子类(新技术)比父类(老技术)更加的强大!在前面介绍了 Redis学习——Redis持久化之RDB备份方式保存数据之后,下面在整理和学习一下Redis的AOF方式保存数据。

    2022年2月26日
    46
  • C语言基础:函数的定义与调用[通俗易懂]

    C语言基础:函数的定义与调用[通俗易懂]    在前面内容中我们调用了一个标准C的库函数,叫printf,那么如果我们想自己定义函数应该如何来编写程序呢?定义函数又有什么好处呢?因为我们在教材中提及到的例子主要目的是为了让读者对程序的原理有一定的了解,所以设定的例子程序通常都比较简单,基本上在几行到十几行,多一点的也就三五十行代而已,但是在真正的编程工作中,我们需要完成的代码将非常大,所以将代码合理的分为不同的区块是很有必要的,…

    2022年6月30日
    35
  • 学习zencart模板制作[通俗易懂]

    学习zencart模板制作[通俗易懂]

         
        1,在includes/template下面新建个文件夹叫你新
    模板的名字就可以了(名字可以随便给只要你自己知道就
    可以了)这里我就叫yourname
        2,把includes/template/defalut_template
           这个文件夹下面的所有的文件夹和文件复制到你
    刚刚新建的文件夹里面去yourname
        3,把template_info.p

    2022年7月27日
    6
  • 干式电力变压器技术参数和要求_10kv变6kv变压器型号技术参数

    干式电力变压器技术参数和要求_10kv变6kv变压器型号技术参数TiKV关键性能参数及优化

    2025年11月29日
    7

发表回复

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

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