【问题标题】:Android Studio : Exclude files in build folder from search resultAndroid Studio:从搜索结果中排除构建文件夹中的文件
【发布时间】:2015-05-10 08:11:35
【问题描述】:

我有一个 Android Studio 项目,其中有多个模块,每个模块都依赖于一个共享模块。假设这个共享模块有一个xml文件调用sample.xml

当我使用 Navigate -> Files... 搜索打开文件并输入“sample.xml”时,我会得到 ​​p>

  1. 分享/src/main/res/values/sample.xml
  2. ModuleA/build/intermediates/exploded-arr/.../res/values/sample.xml
  3. ModuleB/build/intermediates/exploded-arr/.../res/values/sample.xml
  4. ModuleC/build/intermediates/exploded-arr/.../res/values/sample.xml
  5. ModuleD/build/intermediates/exploded-arr/.../res/values/sample.xml ...

由于生成文件夹中的文件并且我们不应该编辑它们,我没有理由将它们包含在我的搜索结果中。无论如何我可以排除它们吗?

【问题讨论】:

标签: android-studio


【解决方案1】:

您可以创建一个自定义范围,它定义了您想要搜索的集合文件,并允许您排除那些您不想搜索的文件。

  1. CTRL+SHIFT+F 显示Find 在路径对话框中。
  2. 范围下选择自定义
  3. 如果下拉列表中存在的范围之一没有根据您的需要限制文件搜索,您可以创建自己的自定义范围。为此,请单击 ... 按钮。
  4. 然后点击+按钮并选择Local
  5. 在右侧的窗格中,您可以包含和排除单个文件以及递归地包含或排除文件夹下的所有文件。

然后,您可以使用自定义范围来限制在您执行在路径中查找时搜索的文件。

【讨论】:

  • 似乎有点太笼统,无法实际回答问题
【解决方案2】:

简单地说,要从搜索中实际排除构建路径,您需要遵循弗兰克的回答点 1 和 2,然后因为没有合适的范围可以实际排除构建文件夹,只需执行以下操作:

在“查找路径”对话框中(CTRL+SHIFT+F):

  1. 点击 ... 配置范围
  2. 点击+按钮,选择本地范围
  3. 为您的新范围命名
  4. 在模式中输入!file:build//*
  5. 点击确定并测试您的新示波器

如果您还想为单个模块创建一个范围,请为您的模块创建一个范围(包括递归您的模块路径),然后将其添加到您的模式的开头:

!file:build//*&&

例如,2 个模块的作用域:

!file:build//*&&file[MODULE1_DIRECTORY_NAME]:*/||file[MODULE2_DIRECTORY_NAME]:*/

只有阅读 Frank 的回答并从此处报告的问题发布 #7 得到完整答案:http://code.google.com/p/android/issues/detail?id=61488

【讨论】:

  • 你确定这回答了他的问题吗?他问关于过滤CTRL+SHIFT+N,你给了他CTRL+SHIF+F的答案。我也需要 Navigate > File 解决方案。有人知道怎么做吗?
  • 两个模块示例缺少括号:应该是!file:build//*&&(file[MODULE1_DIRECTORY_NAME]:*/||file[MODULE2_DIRECTORY_NAME]:*/),否则不排除module2的build子文件夹。
  • 人们没有正确阅读。 Find in Path(和类似的)与 Navigate -> Class / File / Symbol 等相同。前者支持范围,后者神秘地不支持。
  • 出于某种原因,这仍然给了我迭代和生成的文件,即使构建文件夹是它们的父文件夹。这似乎摆脱了所有不需要的结果:“!file:build//*&&!file:*intermediates*/&&!file:*generated*/”。但是,最初的问题是关于文件名搜索(不是文件内容搜索),我也没有找到答案。
  • 我使用 !file:build//*&&!file:app//build//*&&!lib:*..* 模式来排除 build 和 lib 文件夹
【解决方案3】:

有同样的问题。 发现这些 'build' 文件夹在模块的 .iml 文件中被标记为 sourceFolder。

删除所有此类条目解决了问题

<sourceFolder url="file://$MODULE_DIR$/build/..." ..../>

【讨论】:

  • 当我重启AndroidStudio时,模块的iml会恢复...我该怎么办
【解决方案4】:

这个问题似乎在更高版本的 Android Studio 中得到了修复,但如果它再次出现或者你有一个特殊的文件夹设置:

需要借助@9​​87654321@通过gradle修改排除列表

例子:

apply plugin: 'idea'

idea.module {
    excludeDirs += file('build/')
}

然后运行任务ideaModule 以使用Corwin's answer 中描述的排除行重新生成.iml 文件

【讨论】:

  • 效果很好!我想从文件查找中排除我的node_modules 目录,所以我只添加了excludeDirs += file('node_modules/')。谢谢!
【解决方案5】:

Android Studio -> 外观和行为 -> 作用域 -> + -> 添加作用域 -> 本地 -> 设置自定义名称并设置模式

!file:*intermediates*/&amp;&amp;!file:*generated*/&amp;&amp;!file:R.java

【讨论】:

    【解决方案6】:

    要从所有模块中排除所有构建文件夹,请使用此模式:

    !file:*build*/
    

    如果您还想排除所有库,只需使用以下模式:

    !file:*build*/&&!lib:*..*
    

    详细说明:

    1. 在“查找”窗口中点击Scope标签,然后点击三点按钮

    1. 加号按钮 -> 本地 -> 输入名称

    1. 添加所需的模式

    1. 保存并享受

    【讨论】:

      【解决方案7】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-03
        • 2010-10-01
        • 2019-01-15
        • 1970-01-01
        • 2014-07-23
        • 2020-01-21
        • 1970-01-01
        • 2016-11-01
        相关资源
        最近更新 更多