美文网首页
Android源码分析之准备:Android Studio调试A

Android源码分析之准备:Android Studio调试A

作者: 大大纸飞机 | 来源:发表于2018-07-04 11:14 被阅读396次

    导入Android Studio

    Android Studio是阅读Android源码最合适的工具,并且还可以调试,AOSPidegen模块就提供了对Android Studio最好的支持。按照以下步骤,就可以将源码导入了:

    编译idegen模块

    mmm development/tools/idegen/
    

    生成android.ipr

    development/tools/idegen/idegen.sh
    

    运行完成后会在根目录生成android.iprandroid.iml文件,这里android.ipr就是可以打开的项目,而android.iml可以用来配置加载哪部分文件,因为源码体积过于庞大,加载会很慢,而有很多部分是现在不需要研究的,可以仅关注FrameworkPackages部分,在此文件中加入以下几句:

    <excludeFolder url="file://$MODULE_DIR$/.repo" />
    <excludeFolder url="file://$MODULE_DIR$/abi" />
    <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$/cts" />
    <excludeFolder url="file://$MODULE_DIR$/dalvik" />
    <excludeFolder url="file://$MODULE_DIR$/developers" />
    <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$/hardware" />
    <excludeFolder url="file://$MODULE_DIR$/libcore" />
    <excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
    <excludeFolder url="file://$MODULE_DIR$/ndk" />
    <excludeFolder url="file://$MODULE_DIR$/out" />
    <excludeFolder url="file://$MODULE_DIR$/pdk" />
    <excludeFolder url="file://$MODULE_DIR$/prebuilt" />
    <excludeFolder url="file://$MODULE_DIR$/prebuilts" />
    <excludeFolder url="file://$MODULE_DIR$/sdk" />
    <excludeFolder url="file://$MODULE_DIR$/system" />
    <excludeFolder url="file://$MODULE_DIR$/tools" />
    

    接下来就可以通过Android Studio打开了。

    导入后出现的问题

    The current inotify(7) watch limit is too low.

    解决方法:

    sudo vim fs.inotify.max_user_watches = 524288
    
    sudo sysctl -p --system
    

    然后重启Android Studio。

    代码跳转到Jar

    导入完成后,当我们进行代码的跳转时,跳转到的是从jar包反编译的*.class类,而不是源码中的类。

    解决方法如下:

    打开Project Structure,选择Project选项,将SDK设置为和源码版本一致,Android 7.0.0对应的SDK版本号是24,如下所示:

    project

    然后选择Modules选项,选择android->Dependencies,再点击右侧的+按钮,选择Jars or directories,将frameworksexternal目录添加进来,如下所示:

    dependencies

    然后选中所有的*.jar文件,然后点击右侧的向下箭头,点多次,直到它们位于最下方,如下所示:

    dependencies

    这样调整完毕之后,就可以跳转到正确的代码了。

    调试Java代码

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

    直接运行emulator命令是无法启动的,执行方法如下:

    source build/envsteup.sh
    
    lunch 6 //和编译时对应
    
    emulator
    

    然后通过Run->Attach debugger to Android process,或者点击工具栏上的图标:

    debugger

    就会出现刚刚启动的模拟器了,在弹出的对话框中勾选Show all processes,就可以看到运行的全部进程:

    processes

    然后选择system_process,就可以进行调试了。

    调试Native代码

    因为目前研究重点在Java部分,这部分知识之后再补充~

    上一篇:Android源码分析之准备:AOSP编译

    下一篇:Android源码分析之App启动流程(一)

    相关文章

      网友评论

          本文标题:Android源码分析之准备:Android Studio调试A

          本文链接:https://www.haomeiwen.com/subject/drceuftx.html