当前位置: 首页 > 知识库问答 >
问题:

如何从Android Studio gradle构建中排除某些文件?

元彦君
2023-03-14

我正在使用Android Studio和Google Drive,这会使隐藏的系统文件可见(例如图标和桌面ini),导致错误,如本文所述。我希望指示gradle 2.14忽略它们,而不是运行脚本来删除这些文件。

为了找出如何排除文件,我在目录\app\src\main\res\value\app\src\main\java\com\hfad\stowatch\中创建了名为“excludeme.txt”的文件。我尝试对项目中的两个build.gradle文件进行各种修改,但没有成功排除该文件。

具体来说,我对Module: appbuild.gradle文件进行了以下修改:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'], excludes: ['**/excludeme.txt'])
                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12' 
}

我还将其添加到相同构建的android部分。gradle文件,根据这个问题:

aaptOptions {
    ignoreAssetsPattern "!excludeme.txt"
}

我还补充说:

sourceSets {
    main {
        java {
            srcDir "src"                [I also tried w/o this line]
            exclude "**/excludeme.txt"
        }
    }
}

当我选择Build时

Information:Gradle tasks [clean, :app:generateDebugSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:generateDebugAndroidTestSources]
C:\Users\Ellen\GoogleDrive\Ellen-CS115\AndroidStudioProjects\Stopwatch\app\src\main\res\values\excludeme.txt
Error:(1, 1) Error: Premature end of file.
Error:Execution failed for task ':app:mergeDebugResources'.
> C:\Users\Ellen\GoogleDrive\Ellen-CS115\AndroidStudioProjects\Stopwatch\app\src\main\res\values\excludeme.txt:1:1: Error: Premature end of file.

如果我去掉感叹号,结果是一样的:

aaptOptions {
    ignoreAssetsPattern "!excludeme.txt"
}

我如何正确地指示gradle在构建Android项目时忽略包含特定模式的文件?

更新1

根据下面Stefan的建议,我在构建中添加了以下内容。模块:app的gradle文件:

android {
    [omitted]
    sourceSets.main.res.exclude '**/whatever.txt'
}

我添加了一个名为whatever的文件。txt,生成失败,原因是:

Error:Execution failed for task ':app:mergeDebugResources'.
> C:\Users\Ellen\GoogleDrive\Ellen-CS115\AndroidStudioProjects\Starbuzz\app\src\main\res\layout\whatever.txt: Error: The file name must end with .xml

更新2

根据内森的建议,我补充道:

packagingOptions {
    exclude '**/whatever.txt'
    exclude 'src/main/res/layout/whatever.txt'
}

build.gradle(Module: app)android部分。没有改进:

Information:Gradle tasks [:app:generateDebugSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:generateDebugAndroidTestSources]
/Users/spertus/GoogleDrive/Ellen-CS115/AndroidStudioProjects/MacTest/app/src/main/res/layout/whatever.txt
Error:Error: The file name must end with .xml
Error:Execution failed for task ':app:mergeDebugResources'.
> /Users/spertus/GoogleDrive/Ellen-CS115/AndroidStudioProjects/MacTest/app/src/main/res/layout/whatever.txt: Error: The file name must end with .xml
Information:BUILD FAILED

(与Windows上的其他版本不同,最后一个版本是在Mac上构建的。)


共有3个答案

慕宏儒
2023-03-14

在子项目中,在您的情况下,我相信它是APP,将以下内容添加到构建中。gradle文件。

packagingOptions {
    //Exclude the file(s) in this method. Provide the path and file name.    
    exclude 'src\main\res\layout\whatever.txt' 
}

PackageOptions DSL对象允许您控制APK中包含哪些文件<代码>排除将字符串或模式作为参数,允许您按名称或模式忽略文件或目录。

编辑自定义要从Android Studio文档中保留哪些资源。

  1. 使用

最终文件应该与Android Studio文档中的文件相似

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"
    tools:discard="@layout/unused2" />

宰父嘉胜
2023-03-14

Android插件有自己的SourceSet概念:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-配置结构

所以你可能会想做一些类似的事情

android {
    sourceSets.main.res.exclude '**/whatever.txt'
}
夏侯浩气
2023-03-14

看起来gradle中最近的一个更改更改了源集的DSL,因此现在需要在过滤器字段上指定排除:

android {
    sourceSets.main.res.filter.exclude '**/whatever.txt'
}
 类似资料:
  • 我正在经历一个练习,需要在从文件中删除所有元音后从文件中输出文本。例如,包含文本“计算理论”的文件应输出“Thry f Cmpttn”。 我尝试构建一个函数“removeVowel元音(ifsream 我希望在控制台中输出不带元音的字符串,但程序在不输出字符串的情况下终止。

  • 本文向大家介绍从MySQL的SHOW COLUMNS中排除某些列?,包括了从MySQL的SHOW COLUMNS中排除某些列?的使用技巧和注意事项,需要的朋友参考一下 让我们首先创建一个演示表 现在,您可以在desc命令的帮助下检查表的描述。查询如下- 以下是输出 这是从SHOW COLUMNS中排除某些列的查询。您需要排除“ StudentAge”和“ StudentMarks”列。查询如下-

  • 问题内容: 这就是我所需要的。其他详细信息:我有一个src / bootstrap / java文件夹和一个常规的src / main / java文件夹。出于明显的原因,每个人都需要进入一个单独的罐子。我能够使用以下命令生成一个引导罐: 但是常规jar仍包含bootstrap类。我正在用这个答案编译bootstrap类。 没有启动类的任何灯光来生成myproject.jar? 问题答案: 您必须

  • 我有一个java源文件位于src/com/form/myClass 我在同一个文件夹中还有一个javascript文件。 我的项目读取js文件的内容,并在测试中成功完成,即在IDE中运行文件。 但是当我构建并运行我的jar时,好像javascript不再包含在内,我必须特别包含非java文件吗?文件的位置在构建时会移动还是变得相对。 唯一排除的选项是“***.java,***.form” 我正在运

  • 在过去的几个月里,我一直在学习Android系统,并一直在使用Eclipse。 我正在尝试迁移到Android Studio。如何从尚未完成的构建路径中排除某些类? 在Eclipse中,单击鼠标右键很简单。我在Android Studio中找不到任何关于它的引用。