Я использую Android Studio с Google Диском, что делает видимыми скрытые системные файлы (например, Icon
и desktop.ini
), вызывая ошибки, как описано here. Вместо того чтобы запускать скрипты для удаления этих файлов, я хотел бы дать указание gradle 2.14 игнорировать их.Как исключить определенные файлы из Android Studio?
В попытке выяснить, как исключить файлы, я создал файлы с именем «excludeme.txt» в каталогах \app\src\main\res\values
и в \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?
Update 1
предложениеPer Стефана ниже, я добавил следующее в файл 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
Update 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 на [файловых деревьев] (https://docs.gradle.org/current/userguide/working_with_files.html#sec:file_trees) может быть полезным. Есть ли причина для компиляции fileTree в разделе зависимостей сборки? Если вы будете исключать файлы из ваших ресурсов сборки, используйте блок ['sourceSet'] (https://docs.gradle.org/current/dsl/org.gradle.api.tasks.SourceSet.html). – Nathan
Спасибо. Я не видел блок 'sourceSet' в любом из файлов' build.gradle'. Я посмотрю документацию, которую вы цитируете. –
Если после нескольких попыток с 'sourceSet' вы столкнулись с проблемами, обновите свой ответ, и я увижу, смогу ли я помочь :) – Nathan