[方法][工具] Itellij查看Android源码

首先强调两个目录,一个code目录,一个workspace目录,workspace目录中的项目workspace会软链接到code目录中的项目code目录
两种方式,其中第二种手动方式已可以通过第一种运行脚本方式操作完成

一.脚本操作如下:

1.1脚本获取

链接: https://pan.baidu.com/s/1DOqq28GtOvFD3mMffKFLpA 提取码: 77rc

1.2 使用如下:

第一种 默认code目录,默认workspace目录

./as_import_code.sh
默认需要修改脚本中的default_project_code_root_dir和default_workspace_root_dir变量,然后链接

#f9s代码code 路径如下:
default_project_code_root_dir="/home/chengang/miui/miui_code/f9s_dev"
#workspace的目录如下:
default_workspace_root_dir="/home/chengang/miui/miui_workspace"

./as_import_code.sh code_root_dir

第二种 指定code目录,默认workspace目录
#该方式默认软链接到代码中定义的default_workspace_root_dir中,可修改
./as_import_code.sh ~/miui/miui_code/f9s_dev/
第三种 指定code目录,指定workspace目录

./as_import_code.sh code_root_dir target_work_space_root_Dir

#该方式指定code目录和workspace目录,会在指定的workspace目录下生成f9s_dev的workspace目录
./as_import_code.sh ~/miui/miui_code/f9s_dev ~/miui/miui_workspace/bbb/

如上方式操作完之后即可以使用intellij直接打开workspace下的新生成的项目workspace目录,命名以 f9s_dev_workspace或f9s_dev_workspace_07_10形式

打开后即可查看想看的代码
在这里插入图片描述

1.3 预先设置source目录方式

修改脚本中source_code_dir数组变量,添加或修改自己想要预先查看的android源码目录,
当然itellij打开项目工作目录之后仍然可以手动加载source目录,下面第6步中有叙述方式.

# 需要查看的文件目录,可自行按格式添加即可
source_code_dir=(
"frameworks/base/core/java"
"frameworks/base/core/jni"
"frameworks/base/native/android"
"frameworks/base/services/java"
"vendor/qcom/proprietary/camx/src"
"vendor/qcom/proprietary/chi-cdk"
"miui/frameworks/base/core/java"
)

二.手动操作如下

1.创建项目F9S code目录下载项目code目录:

在该目录下repo init及repo sync 好代码

~/miui/miui_code/f9s_dev

2.创建项目workspace目录创建项目workspace目录:

~/miui/miui_workspace/f9s_dev_workspace

3.用Itellij打开F9S 项目workspace文件夹:

首次打开界面的open 或者 从Itellij的菜单栏 File->Open
在这里插入图片描述
打开如下:
在这里插入图片描述

4. 在.iml 文件中先exclude code文件夹的目录名,如下:

在这里插入图片描述
复制粘贴如上1中的code至.iml文件对应的content标签处:

<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$">
     <excludeFolder url="file://$MODULE_DIR$/f9s_dev" />
    </content>
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>

如果code的目录叫 ~/miui/miui_code/xxx_xxx,则如上的f9s_dev改成xxx_xxx,后面需要软链接该code目录.

5. 软链接项目code目录至workspace目录,注意目录位置结构:

chengang@mi:~/miui/miui_workspace/f9s_dev_workspace$ ln -s ~/miui/miui_code/f9s_dev/ .

如下:
在这里插入图片描述
软链接之后,Android所有的源码都显示出来,红色文件夹代表该文件夹被excluded,android 源码很大,如果不先excluded,即上一步4中添加的exclude配置,会导致代码太多index卡住根本无法查看code,如果卡住,记得杀掉该itellij进程,重新配置重新打开.
在这里插入图片描述

6. 对自己需要查看的模块文件mark as source root即可

mark as source之后的文件夹下的目录即可以被IDE index,之后就可以用Itellij 搜索文件以及文件中的关键字,类似apk中的res可以mark as resource等在这里插入图片描述
mark as source之后会在.iml文件中生成相应的配置代码,手动在该文件中添加也可以:
在这里插入图片描述
如下是我查看camera及framework相关code的该.iml的配置文件,拷贝粘贴对应位置之后将f9s_dev改成您自己要看的项目code目录名称即可

注意:
1.可以先将如下粘贴到.iml的文件中
2.然后记得改f9s_dev这个code目录名称为软链接过来的code目录名称即上图中2的名称
3.然后再ln 去软链接至workspace目录,也可以

<content url="file://$MODULE_DIR$">
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/frameworks/base/core/java" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/frameworks/base/core/jni" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/frameworks/base/native/android" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/frameworks/base/services/java" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/vendor/qcom/proprietary/camx/src" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/vendor/qcom/proprietary/chi-cdk" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/packages/apps/MiuiCamera/src" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/packages/apps/MiuiCamera/jni" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/packages/apps/MiuiCamera/res" type="java-resource" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/frameworks/base/services/core/java" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/frameworks/base/services/core/jni" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/miui/frameworks/base/core/java" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/frameworks/av/camera" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/frameworks/av/services/camera" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/hardware/libhardware" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/hardware/interfaces/camera" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/hardware/qcom/camera" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/packages/apps/MiuiCamera/res_overley" type="java-resource" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/frameworks/base/media/java" isTestSource="false" />
 <sourceFolder url="file://$MODULE_DIR$/f9s_dev/frameworks/base/media/jni" isTestSource="false" />
 <excludeFolder url="file://$MODULE_DIR$/f9s_dev" />
</content>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值