Android Studio源码导入与调试

Posted 咸鱼Jay

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Studio源码导入与调试相关的知识,希望对你有一定的参考价值。

从事Android开发都需要涉及到Android源码的阅读,特别是系统应用或者Framework开发,读代码的时间远远比写代码的时间更多。

一、 生成iml与ipr

在Android Studio中导入AOSP源码,需要利用以下配置文件:

  • android.iml AS工程配置文件,记录项目所包含的module、依赖关系、SDK版本等。
  • android.ipr AS导入配置文件,记录工程的具体配置,代码以及依赖的lib等信息。

在完成了AOSP的编译后,接下来可以在AOSP源码中生成上述配置文件,依次执行:

#配置环境
source build/envsetup.sh
lunch #选择好target
#编译idegen
mmm development/tools/idegen/
#生成ipr与iml文件
development/tools/idegen/idegen.sh

执行上述指令后,回到AOSP根目录中生成android.imlandroid.ipr文件。此时可以直接利用Android Studio打开android.ipr文件就可以直接完成导入。

配置android.iml

第一次导入需要的时间会非常长,如果电脑配置不是很好,不建议全部导入,可以选择性导入需要的模块。此时可以修改android.iml文件,可以自定义只加载哪些模块。在android.iml中搜索excludeFolder ,根据需要去除掉不需要导入的模块,如只需要导入framework模块,则配置iml如下:

<excludeFolder url="file://$MODULE_DIR$/./external/emma" />
<excludeFolder url="file://$MODULE_DIR$/./external/jdiff" />
<excludeFolder url="file://$MODULE_DIR$/out/eclipse" />
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/external/bluetooth" />
<excludeFolder url="file://$MODULE_DIR$/external/chromium" />
<excludeFolder url="file://$MODULE_DIR$/external/icu4c" />
<excludeFolder url="file://$MODULE_DIR$/external/webkit" />
<excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" />
<excludeFolder url="file://$MODULE_DIR$/out/host" />
<excludeFolder url="file://$MODULE_DIR$/out/target/common/docs" />
<excludeFolder
url="file://$MODULE_DIR$/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_interme
diates" />
<excludeFolder url="file://$MODULE_DIR$/out/target/product" />
<excludeFolder url="file://$MODULE_DIR$/prebuilt" />
<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$/packages" />
<excludeFolder url="file://$MODULE_DIR$/cts" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<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$/out" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/platform_testing" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<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" />
<excludeFolder url="file://$MODULE_DIR$/vendor" />

三、Android Studio配置

完成修改后,再使用Android Studio打开ipr文件即可。后续如果需要增加或者排除其他模块,可以通过Android Studio进行配置。

完成导入后,当我们点击某个类如Activity,此时可能跳转至Android Studio中的SDK对应的class或者source。此时我们希望跳转到我们自己下载的AOSP源码中,还需要进行如下配置:

如果发现通过界面移动依赖顺序无效,此时可以打开android.iml文件,找到orderEntry 配置,最终修改的配置结果为:

<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="jdk" jdkName="Android API 33, extension level 4 Platform"
jdkType="Android SDK" />

四、调试

要调试代码,首先要打开模拟器,注意不是Android Studio自带的模拟器,而是通过编译后的代码启动的模拟器,否则可能出现代码不对应的问题。

source build/envsteup.sh
lunch x #和编译时对应
#启动模拟器
emulator

接下来通过Run->Attache debugger to Android process,在弹出的Choose Process框内必须选择Show all processes,否则看不到相关的进程:然后选择system_process,就可以进行调试了。

Android 11使用Android Studio调试系统应用:编译SettingsLib模块导入子模块解决编译错误

以上是关于Android Studio源码导入与调试的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Android Studio开发/调试Android源码

Android 11使用Android Studio调试系统应用:编译SettingsLib模块导入子模块解决编译错误

Android源码的下载编译与导入到Android Studio

macOS(Sierra 10.12)上Android源码(AOSP)的下载编译与导入到Android Studio

基于Android的家庭理财系统的设计与实现.rar(毕业论文设计+程序源码) android studio导入可直接打开

Android studio导入第三方类库源码以及jar包