2014-09-18 6 views
17

Per favore, sai come escludere alcuni file dalla cartella delle risorse del progetto Android prima che più cartelle di risorse vengano unite o durante l'unione?Gradle: Escludi file dalla cartella delle risorse Android

Ad esempio:

android { 
    sourceSets { 
    main { 
     assets.srcDirs = [fileTree(dir: 'assets1', exclude: 'myfile.txt'), 'assets2'] // does not work 
     assets.exclude 'assets1/myfile.txt' // does not work 
     assets.exclude '**/*.txt' // does not work 
     assets.exclude '*.txt' // does not work 
    } 
    } 

    packagingOptions { 
    exclude 'assets1/myfile.txt' // does not work 
    exclude '**/*.txt' // does not work 
    exclude '*.txt' // does not work either 
    } 


    aaptOptions { 
    ignoreAssetsPattern "myfile.txt" // does not work 
    } 
} 
+0

FYI: 'assets.srcDirs = [FileTree (dir: 'assets1', escludi: 'myfile.txt'), 'assets2'] 'non funziona. – Blackhex

+0

Hai trovato una soluzione a questo? Avere lo stesso problema con un file di risorse da una dipendenza jar – 3c71

risposta

6

Non è possibile al momento.

La funzione non si applica alle risorse o alle risorse Android.

+0

Grazie, proverò a sperimentare con dipendenza su attività Copia o FileTree prima di arrenderlo ... – Blackhex

6

penso che questo dovrebbe fare quello che vuoi:

android { 
    aaptOptions { 
     ignoreAssetsPattern "myfile.txt" 
    } 
} 

Fonte:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-aapt-options

+0

Cool, grazie, proverò e accetto la tua risposta di conseguenza. – Blackhex

+1

No, anche questo non funziona. L'errore relativo ai file duplicati viene generato durante la fase '' mergeAssets'' mentre penso che '' aaptOption'' sia applicato durante la fase del pacchetto. – Blackhex

+0

Ok, capisco ... scusatemi:/ –

1

Prova questo:

export ANDROID_AAPT_IGNORE="ignoreAssetsPatternThatActuallyWorks" 
./gradlew assembleDebug 

E 'l'unico modo per influenzare il passo mergeDebugAssets (codice found here).

Archiviato a bug su questo.

+0

Grazie, proverò che ... – Blackhex

13

Mi imbatto nello stesso problema e sembra che aggiunga un "!" deve essere escluso:

aaptOptions { 
    ignoreAssetsPattern "!myfile.txt" 
} 

"assets.exclude" potrebbe funzionare anche aggiungendo un "!" ma non l'ho provato ...

+2

usa '*' per caratteri grandi, e usa ':' per dividere i motivi. come: ** "! *. txt:! *. rtf" ** –

+0

funziona per me .. – jony89

0

basta usare bash

zip -d xx.jar xxx.txt 

per rimuovere il file duplicati dal file jar