Esiste un modo ragionevolmente semplice per il file build.gradle
di un modulo per indicare che alcuni file da una dipendenza dovrebbero essere esclusi? Sono specificamente interessato ad escludere determinate risorse da una RAA.Come escludere risorse specifiche da una priorità AAR?
LeakCanary è una libreria interessante per aiutare a rintracciare le perdite di memoria. Tuttavia, ha un requisito non documentato di compileSdkVersion
di 21 o versione successiva. Mentre la maggior parte dei progetti non dovrebbe avere problemi con questo, è sconveniente che una libreria richieda un certo compileSdkVersion
senza una buona ragione. Un team di sviluppo potrebbe aver congelato il proprio compileSdkVersion
come parte di una politica generale per modificare solo quei tipi di impostazioni come parte dei principali aggiornamenti di versione della propria app o qualcosa del genere.
In questo caso, per v1.3.1 di LeakCanary almeno, è richiesto l'unica ragione compileSdkVersion
, AFAICT, è perché la relazione annuale di attività ha una directory res/values-v21/
, che contiene una definizione del tema che eredita da Theme.Material
. Questo tema è utilizzato da un'attività diagnostica. Questa attività non è mai vista dagli utenti finali, solo dagli sviluppatori nelle build debug
. Francamente, a cosa assomiglia quell'attività, a livello di tema, non importa. Forzare un compileSdkVersion
di 21 solo per avere quell'attività diagnostica ha un certo tema, IMHO, stupido.
Sarebbe bello se come parte di una direttiva compile
potessimo dire "hey, per favore, salta il res/values-v21/
da questo AAR, m'kay?". Poiché il tema -v21
sta semplicemente fornendo una definizione alternativa di un tema definito altrove, l'eliminazione del tema -v21
non interromperà la generazione o interromperà le cose in fase di runtime, ma semplicemente ci darà un'attività di diagnostica legata a Holo
-themed.
Non riesco a vedere come this answer funziona con le dipendenze. Sono anche incerto if it is complete, and it certainly does not appear to be supported. Inoltre non si qualifica come "semplice" — Non mi aspetto che qualcuno provi a rilasciare questo in un file build.gradle
solo per bloccare un singolo file da una libreria diagnostica come LeakCanary.
Quindi, c'è qualcosa di più semplice di questo che funziona con le edizioni attuali di Android Plugin per Gradle?
credo, la soluzione per LeakCanary (https://github.com/square/leakcanary) sarebbe quello di forchilo e compila la tua versione con il corretto 'compileSdkVersion'. Non sono sicuro che possa essere contato come risposta alla domanda. –
@ KonstantinLoginov: LeakCanary sembra avere un buon numero di parti mobili interconnesse, motivo per cui sono scettico sul fatto che una forcella sarà così facile. Ho fatto abbastanza spintoni per determinare che l'unica caratteristica di Android 5.0+ era 'Theme.Material', che è quello che mi ha spinto a fare questa domanda. Mentre sto inquadrando la domanda nel contesto di LeakCanary, il problema trascende quella libreria. – CommonsWare
Sarebbe bello se l'attuale sorgente di plugin gradle di google fosse pubblica. I tag per l'origine della DSL [1] sono molto indietro rispetto ai tag di rilascio [2]. [1] https://android.googlesource.com/platform/tools/gradle/+refs [2] https://jcenter.bintray.com/com/android/tools/build/gradle/ – JBirdVegas