因为EXT和NTFS格式的差异,我一直对于windows下阅读Android源码感到不满。
前几天,想把最新的android5.0的源码下下来研究一下,而平时日常使用的又是windows环境,于是专门思考了一下这个问题,总结一次。

要求

有且只有一份可以下载,更新,编译的Android源码,可以在不同平台查看。

硬件篇

方案一:U盘

拷贝一份在linux下的Android源码,到某一U盘。
优点:

  1. u盘便携性非常强,可随身携带

缺点:

  1. 源码不能更新,每次重新拷贝最新的源码需要一台linux,而且因为体积太大,不现实。
  2. EXT的U盘在windows下不能查看,NTFS的U盘的源码在linux下会破坏文件格式(git可以检测的出来)。

方案二:虚拟机

在虚拟机中安装linux,然后把源码目录设置共享。
优点:

  1. 完整的linux下源码,可以共享给windows下,可以随时下载更新、编译等,堪称完美,但是缺点极大。

缺点:

  1. 每次开机都要去启动虚拟机,一度我曾使用vagrant缓解了这个问题。
  2. 开启一个虚拟机需要浪费大量的CPU和内存。

方案三:云主机

优点:

  1. 完整的linux下源码,可以共享给windows下,没有方案一的缺点,但是局限性极大。

缺点:

  1. 云主机的空间大小
  2. 需要联网,云主机的带宽有限。
  3. 这得花多少冤枉钱。

方案四:U盘Linux

优点:

  1. 把linux系统安装到u盘,随插随用

缺点:

  1. 一般的u盘速度慢
  2. 一般的u盘空间不够,最新的android5.0.2的源码,我编译后用了70G左右。
  3. windows下读取不了ext4的u盘,只能在linux下查看

针对上述问题,我结合当前的一些硬件的发展,找到了一个相对于前面更好的终极方案。

终极方案:高速大U盘Linux + 小米路由器

我使用闪迪的128G的CZ88u盘,速度非常快(读260M/s,写240M/s),安装ubuntu到u盘。插入到小米路由器的USB口。
优点:

  1. 高速U盘的linux非常流畅,克服了U盘慢影响系统使用体验的诟病。
  2. 小米路由器可以把EXT4的U盘共享给windows.
  3. 小米路由器是不关机设备,和电脑独立,可以随意切换系统或者设备,均可阅读到源码
  4. 如果网络支持的话,可以实现远程ssh访问到小米路由器阅读源码(静态IP最好,实现动态IP可以花生壳),这将极其方便!
  5. 随时在linux下升级android源码,也可以编译,定制。

缺点:

  1. 高速大U盘比较贵,CZ88,易迅上次做活动799元,现在恢复到1388元。
  2. 小米路由器,我用的699版本的,这个也是成本,但这些都是一次性投入。

软件篇

Android5.0源码下载和编译

这个和之前Android4.x源码下载和编译的方法几乎一样,参考Android学习系列(38)--Android源码下载和编译,如下图:

128G的U盘使用情况(我在上面还搭建了一套完整Android的开发环境和一些其他软件):

小米路由器读取U盘

我把u盘linux个人目录映射到Y盘,里面的aosp目录如下:

使用Android Studio阅读Android源码

这个我在Android拓展系列(10)--使用Android Studio阅读整个Android源码里已经专门谈到了。

使用Git Extensions阅读Android单个模块源码

如果觉得上面的方法太臃肿了,可以选择轻量级的只读方案,而且可以查看Git信息,就是使用Git Extensions。
在aosp/external/glide目录下,右键,选择"GitExt Browser",如下图:

附Git Extensions官方下载地址:http://sourceforge.net/projects/gitextensions/

总结

顿时觉得世界简单了!
看,好多优秀的代码!
要一边折腾一边学习!

Android拓展系列(11)--打造Windows下便携的Android源码阅读环境的更多相关文章

  1. Windows下编译Python2.7源码

    本文开始一个系列文章,深入理解Python源码,算是阅读<Python源码剖析>一书的读书笔记,是一项长期进行的工作.一共分三个部分:Python对象模型,Python虚拟机,Python ...

  2. pytorch下的lib库 源码阅读笔记(2)

    2017年11月22日00:25:54 对lib下面的TH的大致结构基本上理解了,我阅读pytorch底层代码的目的是为了知道 python层面那个_C模块是个什么东西,底层完全黑箱的话对于理解pyt ...

  3. emacs+ensime+sbt打造spark源码阅读环境

    欢迎转载,转载请注明出处,徽沪一郎. 概述 Scala越来越流行, Spark也愈来愈红火, 对spark的代码进行走读也成了一个很普遍的行为.不巧的是,当前java社区中很流行的ide如eclips ...

  4. spark2.1源码分析1:Win10下IDEA源码阅读环境的搭建

    环境:win10.IDEA2016.3.maven3.3.9.git.scala 2.11.8.java1.8.0_101.sbt0.13.12 下载: #git bash中执行: git clone ...

  5. pytorch下的lib库 源码阅读笔记(1)

    置顶:将pytorch clone到本地,查看initial commit,已经是麻雀虽小五脏俱全了,非常适合作为学习模板. 2017年12月7日01:24:15 2017-10-25 17:51 参 ...

  6. 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg

    一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...

  7. Windows下visual studio code搭建golang开发环境

    Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...

  8. Windows下为 Eclipse 配置 C/C++ 编译环境(转)

    1.Eclipse及CDT的安装 CDT的全称是C/C++ DevelopmentTools,CDT使得Eclipse能够支持C/C++的开发.直接下载 eclipse CDT 集成版 下载地址:ht ...

  9. 【转】Android事件分发机制完全解析,带你从源码的角度彻底理解(下)

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9153761 记得在前面的文章中,我带大家一起从源码的角度分析了Android中Vi ...

随机推荐

  1. IE的if条件Hack(兼容性)

    1. 〈!--[if !IE]〉〈!--〉 除IE外都可识别 〈!--〈![endif]--〉 2. 〈!--[if IE]〉 所有的IE可识别〈![endif]--〉 3. 〈!--[if IE 5 ...

  2. javascript 操作cookie

    function setCookie(c_name, value, expiredays) { var exdate = new Date(); exdate.setDate(exdate.getDa ...

  3. 【leetcode】Happy Number(easy)

    Write an algorithm to determine if a number is "happy". A happy number is a number defined ...

  4. 【网络】VPN

    VPN: 来自百度百科 虚拟专用网络的功能是:在公用网络上建立专用网络,进行加密通讯.在企业网络中有广泛应用.VPN网关通过对数据包的加密和数据包目标地址的转换实现远程访问.VPN有多种分类方式,主要 ...

  5. CSS颜色代码 颜色值 颜色名字大全(转载)

    CSS颜色代码 颜色值 颜色名字大全 转载处http://flyjj.com/css-colour-code.html 颜色值 CSS 颜色使用组合了红绿蓝颜色值 (RGB) 的十六进制 (hex) ...

  6. September 23rd 2016 Week 39th Friday

    Even a small star shines in the darkness. 星星再小,也会发光. In the darkness, even a small star can shine. N ...

  7. JNDI 和JDBC的区别

    1.JNDI 和JDBC的区别和联系.两者都是API,是一个标准.并不是什么产品或方法.JDBC 全称:Java Database Connectivity 以一种统一的方式来对各种各样的数据库进行存 ...

  8. Linux进程间通讯的几种方式的特点和优缺点,和适用场合

    http://blog.csdn.net/jeffcjl/article/details/5523569 由于不同的进程运行在各自不同的内存空间中.一方对于变量的修改另一方是无法感知的.因此.进程之间 ...

  9. Html和CSS的关系

    1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字.图片.视频等. 2. CSS样式是表现.就像网页的外衣.比如,标题字体.颜色变化,或为标题加入背景图片. ...

  10. 设计模式学习之中介者模式(Mediator,行为型模式)(18)

    转载地址:http://www.cnblogs.com/zhili/p/MediatorPattern.html 一.引言 在现实生活中,有很多中介者模式的身影,例如QQ游戏平台,聊天室.QQ群和短信 ...