Android studio导入Android源码并解决代码跳转

Android studio (android studio for platform) - ASfP

1. 完整编译AOSP源码

有些java文件是在编译过程中动态生成的,需要完整编译一遍,源码的依赖才能完整。

$ source build/envsetup.sh # 初始化环境变量
$ make -j16 #完整编译 且 -j16进程根据电脑配置相关,一般是处理器/内核 数的一半。

2. 生成IDE导入的工程文件

$ source build/envsetup.sh
$ make idegen
# 或者 mmm development/tools/idegen/ #及 单编framework/idegen.jar

# 如果提示权限问题,请用sudo执行下述命令
$ ./development/tools/idegen/idegen.sh

执行完成后,在AOSP根目录下生成文件:

android.iml # 导入前需先编辑这个文件
android.ipr # 在Android studio中打开这个文件,导入源码工程

3. 导入前,编辑工程文件

为了提高加载速度需要修改以下部分
编辑android.iml文件,需要修改2部分内容:

  1. 增加excludeFolder列表,排除不需要的源码路径,这样可以加快导入和创建文件索引的速度。在.iml文件中有少了的excludeFolder项,在后面根据自己需要补充即可。例如:
...
<excludeFolder url="file://$MODULE_DIR$/frameworks"/>
<excludeFolder url="file://$MODULE_DIR$/kernel"/>
<excludeFolder url="file://$MODULE_DIR$/packages"/>
<excludeFolder url="file://$MODULE_DIR$/sdk"/>
<excludeFolder url="file://$MODULE_DIR$/system"/>
...

说明:也可以通过修改development/tools/idegen/excluded-paths文件,增加/排除的路径。

  1. 删除所有<orderEntry type="module-library">...</orderEntry>项。这些项是引用的源码中编译出来的jar包,如果保留,在浏览过程中查看类型跳转到这些jar中的class文件,而不是源码java文件。删除后,则可以直接跳转到源码文件。
    说明:这些设置也可以在Android studio:project structure --> project settings --> modules --> dependencies中修改,速度比较慢,不如直接编辑.iml文件方便。
    例如:
<orderEntry type="module-library">
  <library>
    <CLASSES>
      <root url="jar://$MODULE_DIR$/./AMSS/lagvm/LINUX/android/out/target/product/prodname/system/framework/locksettings.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>
</orderEntry>
<orderEntry type="module-library">
  <library>
    <CLASSES>
      <root url="jar://$MODULE_DIR$/./AMSS/lagvm/LINUX/android/out/target/product/prodname/system/framework/framework.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />
  </library>

4. 在Android Studio中导入工程

在Android Studio中open打开上面生成的android.ipr文件。如果完成了上面的编辑,并且仅保留所需的源码目录,加载时间会比较短。
加载完成后,可以完整的浏览、编辑代码了。
当关闭AS时,会把当前的配置和索引保存到文件android.iws中。以后再次打开工程就会很快。

修改Android Studio配置参数:

1)Help - Edit custom Properties:  
    (对应配置文件:~/.config/Google/AndroidStudio$version/idea.properties)
    idea.max.intellisense.filesize=100000
2)Help - Edit custom VM options:
    (对应配置文件:~/.config/Google/AndroidStudio$version/studio64.vmoptions)
    -Xms1g
    -Xmx5g

如果修改参数错误,导致studio不能正常启动,可以手动编辑对应的配置文件,删除或者调整相关参数。

5.配置源码正确跳转

导入工程后要想正常跳转源码而不是各种jar包,则需要提升源码的优先级。
AndroidStudio - File --> Project Structure --> Project Settings --> Modules --> Dependencies --> Module Source ,将**Module Source **移到最顶 第一行。操作为:选中 Module source ,一直按 ALT + ↑ (ALT + 向上箭头),将其移动到第一行。

image.png

6. 配置aidl文件跳转

添加前提是你已经编译过framework 代码并按照上面方法将Android源码引入到Android studio 中.

1.搜索我们要查找的aidl 类名称: 如:IActivityManager.class

image.png

2.找到编译时生成的的class 文件,右键选择copy path/Refrence copy 相对路径
image.png

3.在Android Studio 中点击 File --> Project Structure 打项目结构设置窗口, 选中 Global Libraries 后点击上面 + 号选择Java 配置上一步copy的路径,配置后等待配置信息同步完成即可进行跳转
image.png

如果在开发中,我们自己写的aidl 文件也可以通过上面方法进行配置,这样在写代码的时候就不需要我们自己去手动引包,也不会因为没有提示出现错误。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容