源码mirror地址:

aosp-mirror: https://github.com/aosp-mirror/platform_frameworks_base/blob/master/core

在线查看源码AndroidXRef地址:http://androidxref.com/

例如:5.1.0_r1

http://androidxref.com/5.1.0_r1/xref/

如果想复制Android源码到windows上查看,需要开启大小写敏感。因为Android源码中文件中有同名,但是大小写不一致,例如ec.cpp和EC.cpp。linux下面文件名区分大小写,而windows上文件名不区分大小写,将Android源码从Ubuntu中复制到Windows上时候会提醒XX文件已存在。

Eclipse中添加Android系统jar包

用途是,可以使用Eclipse开发系统应用了,这样可以调用系统中才使用的API.

1.首先在项目中右击->属性。如图所示依次操作

 Android之源码学习

2.添加User Library

 Android之源码学习

3.第一次要新建User Library名字

 Android之源码学习

注:一定要勾选上System library(addedto the boot class path)否则会出现错误1。

4.添加jar包

 Android之源码学习

    2.${ANDROID_SOURCE}/out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar

这个4.2.2_lib已经保存下来了,以后有新的工程需要这里的jar包,直接将4.2.2_lib添加进去就可以直接使用了。

 Android之源码学习

将4.2.2_lib移至最上面。

 Android之源码学习

Android之源码学习

完成。

错误1:(一个半小时的教训)

Unable to execute dex: Java heap space Java heap space.

Android之源码学习

转自:https://blog.csdn.net/kangear/article/details/38341765

--------------------------------------------------分割线--------------------------------------------------

研究源码的第一步,肯定是要有源码开发调试环境

基本条件:

  1. 有一个nexus手机
  2. 有一个ubuntu14.4环境的电脑,或虚拟机。 (你所遇到的问题最少,如果你有信心能hold住很多问题,你也可以用OS X)
  3. 选择一个好的梯子
  4. 下载源码https://source.android.com/source/initializing.html
  5. 编译源码https://source.android.com/source/building.html
  6. 刷机到nexus

这个第一步,你会经历很多问题。在你尝试解决,并成功解决后,会为你后续学习打下基础。

你也会明白,源码难,不光是源码本书的庞杂,更是因为需要雄厚的的知识体系作为基础,不然只能浮光掠影的看看基础而已

研究源码的第二步,可以选一些简单的原生app练手

比如launcher,比如Calendar

不要看比较繁杂的Contacts、Gallery、Phone、MMS

可以熟悉google的java风格,了解编译方式。顺道看看Android.mk相关的原理

build目录下的envsetup写的不要太牛逼

研究源码第三部,就可以深入java层的Framework的某一个部分了

从自己熟悉的、感兴趣的东西看起。

比如binder、比如window、比如android启动过程

binder比较推荐,虽然复杂,但是独立,跟后续的步骤可以串起来。

这个时期,最好不要看Telephony,不要看绘制相关的(SurfaceFlinger)

有编译环境, 你可以打开源码中的log开关, 甚至添加一些自己的log, 去摸索 (网上binder的资料多得很)

研究源码第四部,就可以看到hardware和driver了

比如binder, 在framework中的c++只是一个薄层和一些简单的逻辑。在hardware,也很薄

这个时候, 你需要clone kernel的代码了

然后看下binder在驱动中是怎么工作的。 粗看就行,既然来知乎问这个,里面的一些很麻烦的点,比如红黑树,了解就行。

这一步走完,你就会发现,很多很厉害的、很精华的东西,都在kernel里面。

前面几步走过之后, 对于源码就会有个明了于心的脉络,后续就可以根据喜好去钻研某一部分。

前面几步,说难,就难,很多时候,你需要去补充知识面,才能继续下去。

前面几步,说简单,就简单,你坚持,肯定能做到

--------------------------------------------------分割线--------------------------------------------------

如果只看Java层的代码,还是很简单的。

如果涉及到各种通讯以及系统调用,就需要熟悉unix编程,以及操作系统基础知识。

再到驱动和boot的过程中就更是os的知识了,和安卓关系其实不大。当然安卓本身也是借鉴了*nix太多东西,如果是系统程序员,学习起来基本不费力气。
如果是纯做应用的开发,不建议太过深入,因为没有基本的系统编程基础,看了也是白搭。
另外安卓源码也要区分着学习,其实也会有很多坑,毕竟源码的开发人员也是参差不齐。

阅读的过程中可以巧记注释:帮助记忆:

关键词注释在后面,就像阅读理解一样,每读一段就写个段落大意,注释不写汉字,只写英文简写,如下图:这个方法里主要就是Character类和String的charAt方法的关系就这么记一下

Android之源码学习

 

相关文章:

  • 2021-09-23
  • 2021-06-18
  • 2021-09-17
  • 2022-01-25
  • 2022-12-23
  • 2021-12-06
  • 2021-04-22
猜你喜欢
  • 2021-10-09
  • 2021-11-14
  • 2022-12-23
  • 2021-04-29
  • 2021-08-26
  • 2022-12-23
相关资源
相似解决方案