Comment exclure certains fichiers à partir de Android Studio gradle construit?

Je suis en utilisant Android Studio avec Google Drive, ce qui rend les fichiers cachés du système visible (comme Icon et desktop.ini), causant des erreurs, comme décrit ici. Plutôt que d'exécuter des scripts pour supprimer ces fichiers, je voudrais charger gradle 2.14 pour les ignorer.

Dans une tentative de comprendre comment exclure des fichiers, j'ai créé les fichiers nommés "excludeme.txt" dans les répertoires \app\src\main\res\values et dans \app\src\main\java\com\hfad\stopwatch\. J'ai essayé sans succès des différentes modifications de la deux build.gradle fichiers dans mon projet. Aucun succès exclu le fichier.

Plus précisément, j'ai fait la modification suivante à la build.gradle fichier pour Module: app, par cette 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' 
}

J'ai aussi ajouté ceci à la android section de la même build.gradle fichier, par cette question:

aaptOptions {
    ignoreAssetsPattern "!excludeme.txt"
}

J'ai également ajouté:

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

Lorsque j'ai sélectionné Build > Clean Project, ce qui a déclenché un build, j'ai obtenu ce résultat, qui montre que le fichier dans le dossier de ressources n'a pas été ignoré:

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.

Les résultats ont été les mêmes si j'ai enlevé le point d'exclamation:

aaptOptions {
    ignoreAssetsPattern "!excludeme.txt"
}

Comment puis-je donner des instructions appropriées gradle pour ignorer les fichiers contenant un certain modèle lors de la construction de projets Android?

Mise à jour de 1

Par Stefan la suggestion ci-dessous, j'ai ajouté ce qui suit à la build.gradle fichier pour Module: app:

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

J'ai ajouté un fichier nommé whatever.txt dans le res/layout répertoire, et la compilation a échoué avec:

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

Mise à jour 2

Par Nathan de la suggestion, j'ai ajouté:

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

à build.gradle (Module: app) dans le android section. Pas d'amélioration:

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

(Cette dernière version a été sur un Mac, contrairement aux autres, qui étaient sur Windows.)

  • Le Gradle documentation sur fichier trees peut être utile. Est-il une raison pour compiler le fileTree dans la section de dépendance de la construire? Si vous serez à l'exception des fichiers à partir de votre construction de ressources, utilisez la sourceSet bloc.
  • Je vous remercie. Je n'ai pas vu un sourceSet bloc dans les build.gradle fichiers. Je vais jeter un oeil à la documentation que vous citez.
  • Si après avoir essayé un certain nombre de choses avec sourceSet vous rencontrez des problèmes, mise à jour de votre réponse et je vais voir si je peux aider 🙂
  • J'ai essayé d'ajouter sourceSets, comme décrit ci-dessus. Les erreurs semblent tous être sur le fichier de ressources. Je ne suis pas sûr que j'ai besoin pour exclure les non *.fichiers java à partir de répertoires src; ils peuvent être ignorés automatiquement.
  • Pourriez-vous prendre un autre regard? J'ai essayé d'utiliser sourceSets et a ajouté une prime.
  • J'ai ajouté une réponse qui utilise le PackagingOptions DSL objet qui est Android Gradle spécifiques.
  • Un peu de chance sur ce point? Je ne peut tout simplement pas obtenir exclure/exclut de travail, peu importe ce que je fais. Même la plus simple des cas, ne pas exclure quoi que ce soit.
  • Toujours pas de solution.
  • J'ai pensé à elle. Voir ma réponse ci-dessous
  • Ce Q existait déjà... stackoverflow.com/questions/16701256/...
  • Que la question posée à propos de l'exclusion de certains fichiers de classe.
  • Vraiment bonne enquête! Il semble aapt prend en charge un --ignore-les actifs de l'option, tout simplement, il exclut certains fichiers d'actifs de finale de l'artefact. Malheureusement aapt ne supporte pas les exclure de tout fichier de ressources, android plugin gradle ne pouvez rien faire à ce sujet. J'envisage de copier les fichiers du projet avant de le construire, puis recopier par la suite.