基于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项目同步代码和资源的脚本。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 自定义控件_HTML5控件

    自定义控件_HTML5控件自定义控件

  • 《WCF技术内幕》翻译28:第2部分_第5章_消息:使用消息头(中)

    《WCF技术内幕》翻译28:第2部分_第5章_消息:使用消息头(中)

  • JVM调优常用参数

    JVM调优常用参数

  • copy和deepcopy[通俗易懂]

    copy和deepcopy[通俗易懂]总结一下,如果一个集合中的元素是字符串,copy之后则是两个互不相干的新集合,内存地址也不一样,修改任意一个另一个不会做出改变,但是如果其中的元素有数组的话,那么情况就不一样了,copy后虽然集合是两个完全新的集合,但是集合中的数组指向的是同一个内存地址,在此集合中对其中的数组数据进行修改,另一个集合中的元素是数组的内容也会改变,如果想完完全全独立出来是两个独立的集合,就得使用deepcopy而不…

  • 什么是路由懒加载_react 路由懒加载

    什么是路由懒加载_react 路由懒加载路由懒加载:整个网页默认是刚打开就去加载所有页面,路由懒加载就是只加载你当前点击的那个模块。按需去加载路由对应的资源,提高首屏加载速度(tip:首页不用设置懒加载,而且一个页面加载过后再次访问不会重复加载)。实现原理:将路由相关的组件,不再直接导入了,而是改写成异步组件的写法,只有当函数被调用的时候,才去加载对应的组件内容。传统路由配置:importVuefrom’vue’importVueRouterfrom’vue-router’importLoginfro

  • HTML CSS 鼠标样式效果[通俗易懂]

    HTML CSS 鼠标样式效果[通俗易懂]HTML/CSS/JS目录:https://blog.csdn.net/dkbnull/article/details/87934939 &lt;divstyle="cursor:hand"&gt;鼠标手型效果&lt;/div&gt;&lt;divstyle="cursor:pointer"&gt;鼠标手型效果&lt;/div&gt;&lt;!–pointer兼容性比较好

发表回复

您的电子邮箱地址不会被公开。

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