关于Android源码的理解以及如何阅读源码

简介: 版权声明:本文为sydMobile原创文章,转载请务必注明出处! https://blog.csdn.net/sydMobile/article/details/78468941 文章最早发布于我的微信公众号 Android_De_Home 中,欢迎大家扫描下面二维码关注微信公众获取更多知识内容。
版权声明:本文为sydMobile原创文章,转载请务必注明出处! https://blog.csdn.net/sydMobile/article/details/78468941

文章最早发布于我的微信公众号 Android_De_Home 中,欢迎大家扫描下面二维码关注微信公众获取更多知识内容。
本文为sydMobile原创文章,可以随意转载,但请务必注明出处!

平时我们在用Android Studio开发项目的时候,如果想要查看源码,直接 Ctrl + 左键 查看对应的源码,你可能会发现有一些具体源码看不到,或者部分代码飘红。我们就来说说这一部分。

IDE查看源码出现的问题

我们的Android项目都是需要依赖Android SDK里对应的API Level的android.jar包的,这样才可以使用Android提供的API,在IntelliJ里面,查看具体类的源码的时候,如果Android SDK里对应的API Level的Source包有下载的话,IDE会打开对应的Source包,如果没有下载的话,IDE会把对应的API Level的android.jar包反编译场成Java代码,这个规则对于其他的一些第三方的开源项目也是一样的。但是你最好还是下载Source源码来查看,有的时候反编译的Java代码不可能完全和源代码一样,有时候反编译的代码的执行逻辑可能完全等价,但是可阅读性不好,有可能会缺少重要的代码注释。

因为Android SDK自带的Source源码包很小(你可能会说已经好几个G了还小啊,后面会讲到真正的Android源码,哪个时候你就知道了),并没有包括所有的Android Framework的源代码仅仅是提供给应用开发者参考使用,有一些比较少的系统类的源码没有给出,所有你有可能在查看源代码的时候看到这种情况
RuntimeException(“Stub”)
runtimeexception
查看代码的时候遇到这种情况,表示实际运行的时候逻辑会到Android ROM(这里Android ROM可以理解为你Android手机的Android系统,里面同样也包含了你在开发的时候用到的类)里面找相对应的类和方法来代替执行。
此外我们在IDE中查看源代码的时候,还会经常看到一些类和方法中会出现报红(也就是找不到)的情况,这种情况在我们查看源代码的时候是很常见的。
飘红

这种情况并不是说这些方法或者变量是不存在的,而是这些方法因为出于安全或者某些原因被我们使用的Android SDK隐藏了,这些API不直接暴露给应用层的开发者,这些类和方法在Android源码编译完成的android.jar包里面会把这些API隐藏(如果是你自己编译的Android源码的话就不会了,后面的文章会讲),而我们的Android项目是依赖这个编译后的android.jar包的,所以我们在查看源码的时候,IDE就会自动去android.jar里面找对应的API,所以就会出现这种情况了,实际上这种API同样在ROM中是存在的,有些开发者发现了一些可以修改系统行为的隐藏API,在应用层通过反射的方式强行调用这些API执行系统功能,这种手段也是一种HACK。

上面讲了我们在IDE中直接查看源码有可能会出现的问题,下面就介绍一下怎么查看完整的源码。

查看完整源码

当你需要查看完整源码的时候,需要去AOSP(Android Open Source Project)项目里面找了,(需要科学上网)这个里面放着Android真正的完整源码,这里所说的完整源码不仅仅包括Android系统的源码还包括了一些开发工具比如:aapt、adb等等。
android源码
选择自己需要的下先来,如果全部下载下来估计有几个T吧,不过其实是不需要的,作为应用层的开发,我们看应用层源码就好了
应用层源码

介绍查看源码工具:

  1. Chrome扩展工具
    Android SDK Search
    使用这个插件在谷歌浏览器中,打开Android的官网查看API说明的时候,会有个按钮,通过点击这个按钮就可以直接跳转到AOSP中对应的源码中
    插件

    注意仅适用于Android开发者官网上查看API文档,不适用国内的那个镜像网址。
  2. Source Insight查看完整源码
    一个强大的查看源码的软件,把你在AOSP中下载的源码导入到这个软件中就可以快速的查看源码了
    Source Insight
    破解方法:http://www.cnblogs.com/Napoleon-Wang/p/6706773.html
    具体操作方式:
    http://blog.csdn.net/shulianghan/article/details/50553001
  3. 直接将编译后源码导入Android Studio查看
    具体操作步骤:
    http://www.jianshu.com/p/fb16fa459acf
    关于源码的学习:
    http://www.jianshu.com/p/a4b40a9d1b4f

参考:
http://kaedea.com/2016/02/09/android-about-source-code-how-to-read/




AndroidInterviewQuestions
关注微信公众号,及时获取内容更新

目录
相关文章
|
22天前
|
XML Java Android开发
Android实现自定义进度条(源码+解析)
Android实现自定义进度条(源码+解析)
51 1
|
22天前
|
Java Android开发
Android反编译查看源码
Android反编译查看源码
23 0
|
1天前
|
Linux 开发工具 Android开发
Docker系列(1)安装Linux系统编译Android源码
Docker系列(1)安装Linux系统编译Android源码
3 0
|
2天前
|
JSON 编译器 开发工具
VS Code阅读Android源码
VS Code阅读Android源码
9 1
|
1月前
|
定位技术 API 数据库
基于Android的在线移动电子导航系统的研究与实现(论文+源码)_kaic
基于Android的在线移动电子导航系统的研究与实现(论文+源码)_kaic
|
1月前
|
搜索推荐 测试技术 定位技术
基于Android的自助导游系统的设计与实现(论文+源码)_kaic
基于Android的自助导游系统的设计与实现(论文+源码)_kaic
|
1月前
|
Java 关系型数据库 应用服务中间件
基于Android的人事管理系统设计与实现(论文+源码)_kaic
基于Android的人事管理系统设计与实现(论文+源码)_kaic
|
1月前
|
设计模式 测试技术 数据库
基于Android的食堂点餐APP的设计与实现(论文+源码)_kaic
基于Android的食堂点餐APP的设计与实现(论文+源码)_kaic
|
2月前
|
小程序 JavaScript Java
android电子班牌人脸识别系统源码
智慧校园云平台全套源码包含:电子班牌管理系统、成绩管理系统、考勤人脸刷卡管理系统、综合素养评价系统、请假管理系统、电子班牌发布系统、校务管理系统、小程序移动端、教师后台管理系统、SaaS运营云平台。
34 1
|
2月前
|
小程序 Java 数据挖掘
Java校园智慧管理云平台源码 小程序+android电子班牌系统
智慧校园技术架构 ❀后端:Java ❀框架:springboot ❀前端页面:vue +element-ui ❀小程序:小程序原生开发 ❀电子班牌:Java Android
36 0

相关实验场景

更多