③ 其他手机
不是亲儿子,驱动啊、厂商库啥的,只能找第三方ROM进行二次开发咯,以前最出名的就是CM (CyanogenMod) 了,不过好像凉凉了,可以试试 LineageOS
限于篇幅,就一一叙述了,感兴趣想自己试下的可参考:《自己动手编译Android(LineageOS)源码》
0x7、查看Android系统源码的其它方式
除了直接把完整源码下载到本地外,还可以直接在线查看,或者通过AS直接查看。
① 在线查看
不用下一堆代码,而且多个版本挑着看,很香~
- cs.android.com (官方,速度快,可能需要科学上网)
- platform_frameworks_base (Github直接看)
- googlesource (非常全,适合单个模块直接git clone)
- AndroidXref (有点旧了,最新版本到Android 9)
② AS快速查看
依次点击:Settings → Appearance&Behavior → System Settings → Android SDK → 选择所需Android SDK版本源码下载:
接着build.gradle设置下 compileSdk 版本号,Sync一下,点击跳转Framework的类即可跳转。
0x8、调试Android系统源码
① 生成索引
Android源码提供了直接生成AS可识别的文件工具,编译完成Android源码后,会在源码根目录生成一个 android.ipr
。
AS 以 Open an existing Android Studio Project
方式打开此文件,静待索引生成完毕。
索引生成后,调整下AS监视源代码的目录,如out这样的目录,每次编译完都会产生变化,但基本不会用到此目录,直接去掉索引(Excluded掉),以out目录为例,其他不需要的目录也是这样处理:
② 设置JDK和SDK
根据源码版本选择对应的SDK:
设置JDK:
③ 调试源码
源码下断点,然后点击 Attach Debugger to Android Process
选中待调试进程,然后就可以愉快的调试啦~
真机想调试系统进程需要Root权限,然后利用Magisk等软件修改:ro.debuggable = 1,可以新建模拟器时选择 非 Google Play的64位镜像,也可以得到 ro.debuggable = 1 的设备。
大部分时候调试源码是用不到所有的AOSP源码的,也可以直接导入部分源码进行调试。
另外,真机调试,可能出现调试行号与源码不一致,行号跑注释里的情况,大多数原因是国产ROM对相关源码进行了修改,可以在Debugger/Frames看到调用方法,了解这一步进入的哪个方法,然后Ctrl+F查找方法名,定位到正确位置。
0x9、小结
本节快速过了一下AOSP基础相关的姿势,算是为Framework的学习做准备,后续有搞这一块再深入学一波吧~
参考文献:
- 刘望舒:AOSP基础
- Android系统基础
- 【折腾Framework】开篇:源码编译与烧写
- 从零开始搭建Android源码调试环境
- Android Studio查看和调试AOSP源码
- (Android源码)掌握Android阅读源码的两种简单方式