欢迎光临
我们一直在努力

Android Studio 导入安卓源码步骤

前言

我们做Android系统源码开发,在定位问题的过程中经常要从App层跟踪代码到Framework层中,为了更加方便的查找代码,这时候就需要把整个工程源码导入到Android Studio中,导入后我们也可以通过断点调试,更加快速和准确地定位分析解决问题。

操作步骤

开发环境: Ubantu 20.4 Android Studio4.2 Android 11(R) 源码

步骤一

1. 进入源码根目录,初始化系统环境

source build/envsetup.sh

2. 源码根目录执行如下命令 ,生成idegen.jar

mmm development/tools/idegen/

[100% 1767/1767] Install: out/host/linux-x86/framework/idegen.jar #### build completed successfully (03:15 (mm:ss)) ####

3. 源码根目录下执行 sudo development/tools/idegen/idegen.sh

# 这个步骤一般需要等几分钟,成功后在源码根目录下会生成android.ipr和android.iml两个文件 Read excludes: 9ms Traversed tree: 24991ms 

4. 修改android.ipr和android.iml 的文件读写权限,文件默认为只读权限,修改权限后,我们修改android.iml文件,可以自定义只加载哪些模块,这样子在导入整个源码过程中,速度会快一点

# android.iml (记录项目所包含的module、依赖关系、SDK版本等等,类似一个XML文件) # android.ipr (工程的具体配置,代码以及依赖的lib等信息,类似于Visual Studio的sln文件) # 也是在工程源码根目录下执行如下命令 sudo chmod 777 android.iml sudo chmod 777 android.ipr

5. 使用文本编辑器打开"android.iml"文件,搜索关键字"excludeFolder ",把不需要加载的模块添加到此处,我一般关注app层和framework层,过滤掉以下模块,配置如下:

<excludeFolder url="file://$MODULE_DIR$/.repo" /> <excludeFolder url="file://$MODULE_DIR$/art" /> <excludeFolder url="file://$MODULE_DIR$/bionic" /> <excludeFolder url="file://$MODULE_DIR$/bootable" /> <excludeFolder url="file://$MODULE_DIR$/build" /> <excludeFolder url="file://$MODULE_DIR$/compatibility" /> <excludeFolder url="file://$MODULE_DIR$/dalvik" /> <excludeFolder url="file://$MODULE_DIR$/cts" /> <excludeFolder url="file://$MODULE_DIR$/developers" /> <excludeFolder url="file://$MODULE_DIR$/developers/samples" /> <excludeFolder url="file://$MODULE_DIR$/development" /> <excludeFolder url="file://$MODULE_DIR$/device" /> <excludeFolder url="file://$MODULE_DIR$/docs" /> <excludeFolder url="file://$MODULE_DIR$/external" /> <excludeFolder url="file://$MODULE_DIR$/flashing-files" /> <excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" /> <excludeFolder url="file://$MODULE_DIR$/hardware" /> <excludeFolder url="file://$MODULE_DIR$/kernel" /> <excludeFolder url="file://$MODULE_DIR$/libcore" /> <excludeFolder url="file://$MODULE_DIR$/libnativehelper" /> <excludeFolder url="file://$MODULE_DIR$/out" /> <excludeFolder url="file://$MODULE_DIR$/pdk" /> <excludeFolder url="file://$MODULE_DIR$/platform_testing" /> <excludeFolder url="file://$MODULE_DIR$/prebuilt" /> <excludeFolder url="file://$MODULE_DIR$/prebuilts" /> <excludeFolder url="file://$MODULE_DIR$/shortcut-fe" /> <excludeFolder url="file://$MODULE_DIR$/sdk" /> <excludeFolder url="file://$MODULE_DIR$/system" /> <excludeFolder url="file://$MODULE_DIR$/test" /> <excludeFolder url="file://$MODULE_DIR$/toolchain" /> <excludeFolder url="file://$MODULE_DIR$/tools" />

好了,接下来就是用Android Studio 打开工程源码下的 android.ipr 文件,此时就开始加载代码,整个过程大概需要十几分钟。

步骤二

这个时候代码加载完成后,但是会发现当你点击应用层中某个Activity调用Framework层 AMS,WMS 中的方法时, 会跳转到 Android SDK中的AMS,WMS文件中去,而不是项目代码中framework/base/对应的AMS,WMS文件。

再者,Activity中定义的成员变量为 String, ArrayList,HashMap类型,在使用的地方(比如String.replace(), ArrayList.add(), HashMap.put()方法)你想具体看看实现源码,发现点击进去跳转到JDK中的jar中包去了,而不是项目代码的/libcore/ojluni/src/main/java/java/io 下的文件。

这个时候,我们就需要新建一个没有任何jar包的自定义的AndroidSDK,然后关联到项目工程上(目的:不用官方的JDK,用项目代码中的jar包)。

好了,接下来开始配置项目所依赖的 JDK 和 SDK

配置自定义SDK的界面,打开路径为:右键项目名->Open Module Settings

图一:

Android Studio 导入安卓源码步骤

图二:

Android Studio 导入安卓源码步骤

图三:

Android Studio 导入安卓源码步骤

图四:

Android Studio 导入安卓源码步骤

图五:

Android Studio 导入安卓源码步骤

好了,到这里,等待工程源码加载完毕,就可以正确跳转并阅读源码啦!

工欲善其事,必先利其器,用断点调试定位分析问题,也会让你事半功倍,去在平时的工作

中慢慢积累吧,加油!

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《Android Studio 导入安卓源码步骤》
文章链接:https://www.456zj.com/19231.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址