Android Studio下查看源码
下载源码
点击Settings
–>Android SDK
–>勾选Show Package Details
,这时就可以看到Sources for Android XX
,勾选下载即可。
下载的源码位于Sdk\sources\android-27
下。
关联源码
找到C:\Users\{USER_NAME}\.AndroidStudio{version}\config\options\jdk.table.xml
,比如我这里是:
C:\Users\Administrator\.AndroidStudio3.3\config\options\jdk.table.xml
, 打开搜索Android API 27 Platform
,在<sourcePath>
配置路径:
<sourcePath>
<root type="composite">
<root url="file://$USER_HOME$/AppData/Local/Android/Sdk/sources/android-27" type="simple" />
</root>
</sourcePath>
重启一下Android Studio即可。
如果在系统函数中跳转遇到红色的显示类,可以尝试点击
File
菜单下面的Invalidate Caches/Restart
,选择Invalidate and Restart
即可。
这种方式下载的源码,只适用于google这种未修改rom的手机,可以直接下断点,如果像小米这种深度rom的手机,很多断点是无效的。
AOSP源码
很多时候,会遇到
throw new RuntimeException("Stub!");
表示实际运行时的逻辑会由Android ROM里面相同的类代替执行。
当你需要的源码在Android SDK Source
中找不到的时候,就有必要去AOSP(Android Open Source Project)
项目里面找了。
chrome有个扩展叫:Android SDK Search
安装后,到 Android开发者官网 查看API时,这个扩展可以在API类名旁边显示一个跳转链接,用于跳转到AOSP
中对应的类的源码,方便查看源码。
另外在浏览器输入框输入 ad + tab
,注意是ad字母后输入tab键,之后输入要查询的API, 就会进入Android SDK搜索功能:
这时,你在AOSP查看代码时,还可以返回上一级看到同目录的其他源码
另外还有个网站 http://androidxref.com 可以快速在线查询,跳转,非常方便
Android目录分类
AOSP源码很多,所以 最好分类查看:
https://developer.android.com/guide/platform?hl=zh-cn 上有平台构架图:
对应AOSP的目录结构:
第一层:应用程序层(applications
)对应根目录下platform/packages/apps
第二层:应用程序框架层(application framework
)对应根目录下的platform/frameworks
第三层:运行库层包括运行库(libraries
)和android运行时环境(android runtime
)
运行库(libraries
)对应目录很多,其中libc
库对应的是platform/bionic
android运行时环境(android runtime
),Core Libraries
对应根目录下的platform/libcore
,Dalvik Virtual Machine
对应根目录下的platform/dalvik
,不过现在已经是ART
了,所以目录是platform/art
第四层:Linux内核层对应根目录下的kernel
,每一个目录对应了一个kernel
的版本
三、四层中间还有个硬件抽象层(HAL
)对应根目录下的platform/hardware
packages 目录
|——apps//应用程序库
|——|——BasicSmsReceiver//基础短信接收
|——|——Bluetooth//蓝牙
|——|——Browser//浏览器
|——|——Calculator//计算器
|——|——Calendar//日历
|——|——Camera//照相机
|——|——CellBroadcastReceiver//单元广播接收
|——|——CertInstaller//被调用的包,在Android中安装数字签名
|——|——Contacts//联系人
|——|——DeskClock//桌面时钟
|——|——Email//电子邮件
|——|——Gallery//图库
|——|——Gallery2//图库2
|——|——HTMLViewer//HTML查看器
|——|——KeyChain//密码管理
|——|——Launcher2//启动器
|——|——Launcher3//启动器
|——|——Music//音乐
|——|——MusicFX//音频增强
|——|——PackageInstaller//包安装器
|——|——Phone//电话
|——|——Protips//主屏幕提示
|——|——Provision//引导设置
|——|——QuickSearchBox//快速搜索框
|——|——Settings//设置
|——|——SoundRecorder//录音机
|——|——SpareParts//系统设置
|——|——Tag//标签
|——|——WallpaperPicker
|——experimental//非官方的应用程序
|——|——BugReportSender//Bug的报告程序
|——|——Bummer
|——|——CameraPreviewTest//照相机预览测试程序
|——|——DreaamTheater
|——|——ExampleImsFramework
|——|——LoaderApp
|——|——NotificationLog
|——|——NotificationShowcase
|——|——procstatlog
|——|——RpcPerformance
|——|——StrictModeTest
|——inputmethods//输入法
|——|——LatinIME//拉丁文输入法
|——|——OpenWnn//OpenWnn输入法
|——|——PinyinIME//拼音输入法
|——providers//提供器
|——|——ApplicationsProvider//应用程序提供器,提供应用程序所需的界面
|——|——CalendarProvider//日历提供器
|——|——ContactsProvider//联系人提供器
|——|——DownloadProvider//下载管理提供器
|——|——MediaProvider//媒体提供器
|——|——TelephonyProvider//彩信提供器
|——|——UserDictionaryProvider//用户字典提供器
|——screensavers//屏幕保护
|——|——Basic//基本屏幕保护
|——|——PhotoTable//照片方格
|——|——WebView//网页
|——wallpapers//墙纸
|——|——Basic//系统内置墙纸
|——|——Galaxy4//S4内置墙纸
|——|——HoloSpiral//手枪皮套墙纸
|——|——LivePicker// 选择动态壁纸
|——|——MagicSmoke// 壁纸特殊效果
|——|——MusicVisualization// 音乐可视化,图形随音乐而变化
|——|——NoiseField
|——|——PhaseBeam
frameworks/base目录
|——api
|——cmds //Android中的重要命令(am,app_proce等)
|——core //核心库
|——data //声音字体等数据文件
|——docs //文档
|——drm //数字版权管理
|——graphics //图形图像
|——keystore //数字签名证书相关
|——libs //库
|——location //地理位置
|——media //多媒体
|——native //本地库
|——nfc-extras //NFC相关
|——obex //蓝牙传输
|——opengl //OpenGL相关
|——packages //设置,TTS,VPN程序
|——sax //XML解析器
|——services //Android服务
|——telephony //电话相关
|——test-runner //测试相关
|——tests //测试相关
|——tools //工具
|——wifi //无线网络