Chromium Android工程迁移编译过程

本文从Chromium编译的中间产物入手深入分析、学习Chromium Android版本的工程化定制流程。初始工作依赖于Chromium的ninja、GYP构建系统,在构建完成后基于编译中间产物,迁入Android Studio作为新的构建工程,测试编译发布的过程。 注:这种编译过程除了资源文件外其他编译中间产物,都不可修改,不具备大规模定制化的可能性,仅作为熟悉编译过程和代码结构的学习、测试使用。 前提 Chromium代码结构、Android开发、Android Studio使用 编译Chromium 编译步骤可以参考Chromium团队的文章,可以选择编译目标为chrome_public_apk、content_shell_apk,本文以chrome_public_apk为例。 编译结果APK 在以chrome_public_apk为编译目标后,在经历一段时间后编译完成,在out/***文件夹内就包含了所有的编译结果和编译中间产物,其中apk在apks文件夹内,可以拉取安装一下,除了包名外其他功能与Chrome基本一致,本文的迁移目标就是在Android Studio工程下同样可以编译出这个APK,再探讨后续的源码迁移和定制工作。 工作目录 在out/***文件夹下,我们主要涉及到的文件分为三类:so、jar、resource,各自又来自不同的Chromium模块。 apks—编译目标文件目录 gen—编译过程中间产物,基本不涉及 lib.java—jar文件的主要来源,将不同模块的java文件编译后汇集在这个目录 locale—国际化的资源文件 resource-zips—资源文件的主要来源,也是Android Studio module化的主要依据 lib.unstripped—so文件目录 建立Android Studio工程 由于Chromium原有模块是基于命名空间来管理的,而且Android的R资源文件定义方式与此关联,所以需要通过Android Application、Library module的方式进行区分,同时还需要将Android Support这一类第三方库通过Gradle依赖的方式进行关联,而不是JAR+资源文件的方式。 所以基于Chromium的模块划分方式分为如下几个子module: app—org.chromium.chrome,主App Application ui—org.chromium.ui,Android Library base—org.chromium.base,Android Library components—com.chromium.components,Android Library content—org.chromium.content,Android Library media—org.chromium.media,Android Library autofill—org.chromium.components.autofill,Android Library web_contents_delegate_android—org.chromium.components.web_contents_delegate_android,Android Library…

浅析宽带运营商劫持

今天请求公司主站裸域会导致莫名奇妙的跳转到yiqifa.com然后再跳转回www域的诡异问题,清理Cookies、更换DNS均无效,郁闷!在公司群里讨论了一下大概可以锁定为宽带运营商劫持,由于之前安装了Wireshark也没怎么用,正好出现类似问题,使用HTTP抓包工具分析再好不过了。关闭大部分的可能产生网络连接的软件,Start&Action! 去掉正常的请求响应包,锁定到302请求,依次向下查看,果然发现了一些猫腻。截图如下: 96号 百度HM请求包61.135.185.140 URL:http://hm.baidu.com/h.js?ca88bf7b092f300a228b2c153a0a9fc8 97号 百度HM响应包61.135.185.140 HTTP 302 Location=http://122.141.234.60:51234/bdpop.sl.php?http://hm.baidu.com/h.js?ca88bf7b092f300a228b2c153a0a9fc8 当浏览器302跳转上述地址时响应Cookie里面增加了一个DIANSHANG=54   100号 跳转URL请求包122.141.234.60 URL:http://122.141.234.60:51234/bdpop.sl.php?http://hm.baidu.com/h.js?ca88bf7b092f300a228b2c153a0a9fc8   103号TCP超时快速重传包61.135.185.140 HTTP 304   106号跳转URL响应包122.141.234.60 HTTP 200 window.location=’http://p.yiqifa.com/n?k=2mLErn2OWE3lrI6H2mLErI6H6ljqWmLm6lwLWN6HWl3FWNtsrI6HkQLErnWLWlDO39MErBXpgZUfgmL-&e=c&t=http://www.wangjiu.com’;   117号浏览器加载上述Location请求包   我们所看到的劫持发生在96号请求包和97号响应包之间,大致过程如下: 1)浏览器将/h.js的请求(96号)发送到百度; 2)宽带运营商嗅探到这个请求后,会将百度的302响应进行篡改,然后转发至用户浏览器(97号),与此同时对百度TCP连接的响应直接给予超时处理; 3)此时真正的响应(来自百度)可能还未到达用户。这就导致了百度服务器认为响应没有送达用户浏览器-发起TCP快速重传(103号),但是用户浏览器在这个过程已经确认收到响应(来自宽带运营商); 4)根据响应结果,浏览器触发302跳转,然后就是我们所看到的先跳转yiqifa.com(117号)然后yiqifa将它的CPSID带上再跳转回主站(后续包)。

Google Chrome:如何变得更快,更强,更智能

如果你还没有用过Chrome这款浏览器,抓紧安装体验一下吧。在这个比拼浏览器速度的年代,Google完胜Mozilla、微软,特别是JavaScript的性能方面。即便如此,如果你对Chrome做一些额外的调整将会让它更快。 为了我们 To help with that effort, we’ve gathered for your consideration a few of our favorite free Google Chrome. Experience the power enhancements they provide, and in a few days you’ll wonder how you ever survived online with a bare-bones browser. 如果你是Geek,通过Chrome的实验特性发挥CPU、GPU的性能来优化你的网上冲浪。这些特性被隐藏在不起眼的Chrome菜单中,这样做是为了防止初级用户无意搞崩他们的浏览器,所以在这里我们会说明这些特性是如何工作的。速度来围观吧! 效率扩展程序 如果你还没安装最新版的Chrome,猛戳此处下载再说吧。下载完后打开Chrome…