2014-12-03 14 views
16

Ho un file build.gradle con dependencies { classpath 'com.android.tools.build:gradle:0.13.3'} e apply plugin: 'com.android.application'.Come aggiungere le opzioni del compilatore java durante la compilazione con Android Gradle Plugin?

Quando faccio una build di debug ottengo:

gradle clean assembleDebug 
:myapp:preBuild 
(...) 
:myapp:compileDebugJava 
Note: C:\path\to\MyClass.java uses unchecked or unsafe operations. 
Note: Recompile with -Xlint:unchecked for details. 

:myapp:preDexDebug 
(...) 
:myapp:assembleDebug 

BUILD SUCCESSFUL 

Come posso aggiungere il -Xlint:unchecked al compito di fondo? Gradle Plugin User Guide on Java compilation options non è utile.

risposta

3

Ho trovato la soluzione seguente basata su Gradle Plugin User Guide on Manipulating Tasks e Gradle DSL doc about JavaCompile:

Aggiungi al build.gradle:

preBuild { 
    doFirst { 
     JavaCompile jc = android.applicationVariants.find { it.name == 'debug' }.javaCompile 
     jc.options.compilerArgs = ["-Xlint:unchecked"] 
    } 
} 

L'applicazione varianti sono null durante la fase di configurazione del Gradle e la richiesta JavaCompile compito, inoltre, non esiste, quindi faccio la modifica nella fase di esecuzione, invece.

+0

In quale build.gradle di file e in quale sezione di quel file? – Andrew

+0

@Andrew threre sono due file gradle: "project-level" e "app-level". Solo il "livello dell'app" dovrebbe applicare il plugin 'com.android.application', e questo è il file che intendo. Devi aggiungerlo direttamente al file, non in nessuna sezione (la profondità di indentazione di 'preBuild {' è 0) –

+1

che non sembra funzionare. la parte superiore dei miei moduli build.gradle lima assomiglia: applicare plugin: 'com.android.application'
prebuild {{ doFirst JavaCompile jc = {android.applicationVariants.find it.name == 'debug' } .javaCompile jc.options.compilerArgs = [ "-Xlint: deprecato"] }} Android { E muore con: Esecuzione non riuscita per l'attività ': climbingguide: prebuild'. > Impossibile ottenere la proprietà 'javaCompile' su un oggetto nullo – Andrew

19

Ho provato la soluzione proposta da @Konrad Jamrozik ma non ha funzionato con il mio progetto a causa dei sapori nel mio progetto.

Dato che stiamo attivando avvisi aggiuntivi, non qualcosa che sta cambiando in modo significativo il funzionamento del compilatore, non vedo che si tratti di un problema che verrà aggiunto alle versioni di rilascio e di debug. Come tale, questa risposta ha un metodo più pulito che funziona con i sapori: How to add -Xlint:unchecked to my Android Gradle based project?

Nel mio caso, l'aggiunta di questo al file build.gradle del modulo interessato:

gradle.projectsEvaluated { 
    tasks.withType(JavaCompile) { 
     options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" 
    } 
} 
Problemi correlati