gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:42:13 25 4
gpt4 key购买 nike

我正在使用带有 Google Drive 的 Android Studio,它使隐藏的系统文件可见(例如 Icondesktop.ini ),导致错误,如 here 所述.我不想运行脚本来删除这些文件,而是指示 gradle 2.14 忽略它们。

为了弄清楚如何排除文件,我在目录 \app\src\main\res\values 中创建了名为“excludeme.txt”的文件。并在 \app\src\main\java\com\hfad\stopwatch\ .我尝试了对这两个 build.gradle 的各种修改都没有成功我的项目中的文件。没有成功排除文件。

具体我对build.gradle做了如下修改文件为 Module: app , 每 this question :

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同款 build.gradle文件,每 this question :
aaptOptions {
ignoreAssetsPattern "!excludeme.txt"
}

我还补充道:
sourceSets {
main {
java {
srcDir "src" [I also tried w/o this line]
exclude "**/excludeme.txt"
}
}
}

当我选择 Build > Clean Project ,触发了构建,我得到了这个输出,这表明资源文件夹中的文件没有被忽略:
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"
}

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

更新 1

根据下面 Stefan 的建议,我将以下内容添加到 build.gradle文件为 Module: app :
android {
[omitted]
sourceSets.main.res.exclude '**/whatever.txt'
}

我添加了一个名为 whatever.txt 的文件在 res/layout目录,并且构建失败:
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

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

最佳答案

看起来 gradle 最近的变化改变了 sourceSets 的 DSL,所以你现在需要在过滤器字段上指定排除:

android {
sourceSets.main.res.filter.exclude '**/whatever.txt'
}

关于android-studio - 如何从 Android Studio gradle 构建中排除某些文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41899973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com