Android Studio中的非项目文件及项目目录下的全局搜索
一、背景
项目开发中,AS(Android Studio)经常会用到通过关键字在项目空间下搜索对应结果。最经常用到的Find in Path。例如打开Find in Path后,可以选中Scope tab,选择All Places范围去搜索对应的关键字,下方会自动显示对应的搜索结果。
Find in Path搜索时,可选的tab有In Project、Module、Directory和Scope。同时Scope下又细分了很多选项,即对应的选择条件,例如All Places、Project Files、Project Source Files等等。但是无论是哪种tab,以及Scope tab下的哪种方式,有一点我们必须意识到的是,默认情况下是不包含非项目文件的。也就是说,对当前项目目录而言,通过Find in Path搜索时,哪怕选的是Scope下的All Places,搜索的结果在一定意义上而言,都不是完整的。仅仅只是列出了项目文件中对应的匹配结果。
纳尼 ?
....
是的。
复制代码二、非项目文件
2.1 自定义Scope不包含非项目文件
这里首先牵涉到一个名词,非项目文件,即non-project files。那到底哪些是非项目文件,非项目文件又是如何指定的呢?
我们先来直接感受下:
在上图选中Scope tab的情况下,如果我们点击其右边的...,会进入到一个Scopes的自定义界面,在这个界面中,我们可以新增、编辑或删除自定义的Scope,其实说白了,就是可以自定义搜索的范围,这个范围,是依据合乎Scope Pattern的模式去对应匹配范围,然后就可以针对此范围进行关键字搜索。
例如,如果我想针对Buil目录范围去搜索,可以如下操作:
点击+ >> Local >> 命名Build,此时可以看到如下界面。
non-project files这一称谓。并且,即使是我们自定义的Scope,无论怎样设置Pattern,也将不会包括非项目文件。
Scope Pattern官方文档说明如下:
www.jetbrains.com/help/idea/2…
最简单的,我们填入一个针对项目全局目录下的Pattern,可以看到图示结果。
此时,点击OK,表明自定义的Scope范围创建成功。
我们重新看下搜索结果。
是的,此时依然是不包含非项目文件的。
2.2 非项目文件的指定
AS中每个模块,在构建项目之前,都有一个sync的过程。这其中,包括对每一个模块的配置声明,模块的配置声明,是有sync过程中的Gradle Task产生,会形成一个.iml的文件。每个模块下的.iml文件中,都包括了模块名,模块路径,依赖库信息,语言及版本,模块目录等信息。其中,模块目录中就包括了sourceFolder和excludeFolder声明。
如:
<content url="file://$MODULE_DIR$">
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/kapt/devDebug" isTestSource="false" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/dev/debug" isTestSource="false" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/dev/debug" isTestSource="false" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/dev/debug" isTestSource="false" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/dev/debug" isTestSource="false" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/kaptKotlin/devDebug" isTestSource="false" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/dev/debug" type="java-resource" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/dev/debug" type="java-resource" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/src/devDebug/res" type="java-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/devDebug/resources" type="java-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/devDebug/assets" type="java-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/devDebug/aidl" isTestSource="false" />
    <sourceFolder url="file://$MODULE_DIR$/src/devDebug/java" isTestSource="false" />
    <sourceFolder url="file://$MODULE_DIR$/src/devDebug/rs" isTestSource="false" />
    <sourceFolder url="file://$MODULE_DIR$/src/devDebug/shaders" isTestSource="false" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/kapt/devDebugAndroidTest" isTestSource="true" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/dev/debug" isTestSource="true" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/dev/debug" isTestSource="true" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/dev/debug" isTestSource="true" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/dev/debug" isTestSource="true" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/dev/debug" type="java-test-resource" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/dev/debug" type="java-test-resource" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevDebug/res" type="java-test-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevDebug/resources" type="java-test-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevDebug/assets" type="java-test-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevDebug/aidl" isTestSource="true" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevDebug/java" isTestSource="true" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevDebug/rs" isTestSource="true" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDevDebug/shaders" isTestSource="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/kapt/devDebugUnitTest" isTestSource="true" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/test/dev/debug" isTestSource="true" generated="true" />
    <sourceFolder url="file://$MODULE_DIR$/src/testDevDebug/res" type="java-test-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/testDevDebug/resources" type="java-test-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/testDevDebug/assets" type="java-test-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/testDevDebug/aidl" isTestSource="true" />
    <sourceFolder url="file://$MODULE_DIR$/src/testDevDebug/java" isTestSource="true" />
    <sourceFolder url="file://$MODULE_DIR$/src/testDevDebug/rs" isTestSource="true" />
    <sourceFolder url="file://$MODULE_DIR$/src/testDevDebug/shaders" isTestSource="true" />
    <sourceFolder url="file://$MODULE_DIR$/src/dev/res" type="java-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/dev/resources" type="java-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/dev/assets" type="java-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/dev/aidl" isTestSource="false" />
    <sourceFolder url="file://$MODULE_DIR$/src/dev/java" isTestSource="false" />
    <sourceFolder url="file://$MODULE_DIR$/src/dev/rs" isTestSource="false" />
    <sourceFolder url="file://$MODULE_DIR$/src/dev/shaders" isTestSource="false" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDev/res" type="java-test-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDev/resources" type="java-test-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDev/assets" type="java-test-resource" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDev/aidl" isTestSource="true" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDev/java" isTestSource="true" />
    <sourceFolder url="file://$MODULE_DIR$/src/androidTestDev/rs" isTestSource="true" />
    < 
                     
                    
                 
                    
                