首先强调两个目录,一个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>