2014-12-03 7 views
16

Mam plik build.gradle z dependencies { classpath 'com.android.tools.build:gradle:0.13.3'} i apply plugin: 'com.android.application'.Jak dodać opcje kompilatora java podczas kompilacji z wtyczką Android Gradle?

Kiedy robię build debugowania uzyskać:

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 

Jak mogę dodać -Xlint:unchecked do podstawowego zadania? Gradle Plugin User Guide on Java compilation options jest niepomocny.

Odpowiedz

3

Znalazłem następujące rozwiązanie oparte na Gradle Plugin User Guide on Manipulating Tasks i Gradle DSL doc about JavaCompile:

Dodaj do build.gradle:

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

Aplikacja warianty są null podczas fazy konfiguracji Gradle i wymaganej JavaCompile zadania również nie istnieje, w związku z tym dokonuję modyfikacji w fazie wykonania.

+0

W którym build.gradle plik i w która sekcja tego pliku? – Andrew

+0

@Andrew threre to dwa pliki gradle: "poziom projektu" i "poziom aplikacji". Tylko "poziom aplikacji" powinien stosować wtyczkę 'com.android.application' i to jest ten plik, który mam na myśli. Musisz dodać go bezpośrednio do pliku, a nie do żadnej sekcji (głębokość wcięcia 'preBuild {' is 0) –

+1

, która wydaje się nie działać. szczyt moich modułów build.gradle pliku wygląda następująco: zastosowanie wtyczki: 'com.android.application'
prebuild { doFirst { JavaCompile jc = android.applicationVariants.find {it.name == 'debug' } .javaCompile jc.options.compilerArgs = [ "-Xlint: przestarzała"] } } android { i umrze z: realizacji zadania powiodło się przez 'climbingguide: prebuild'. > Nie można uzyskać właściwości 'javaCompile' na pustym obiekcie – Andrew

19

Próbowałem rozwiązania stworzonego przez @Konrad Jamrozik, ale nie działało ono z moim projektem z powodu smaków w moim projekcie.

Biorąc pod uwagę, że właśnie wprowadzamy dodatkowe ostrzeżenia, a nie coś, co znacząco zmienia sposób działania kompilatora, nie widzę problemu, który zostanie dodany zarówno do wersji wydania, jak i do debugowania. Jako taka, ta odpowiedź jest czystszy sposób, który działa z smakach: How to add -Xlint:unchecked to my Android Gradle based project?

W moim przypadku, to dodanie do pliku build.gradle modułu dotkniętego:

gradle.projectsEvaluated { 
    tasks.withType(JavaCompile) { 
     options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" 
    } 
} 
Powiązane problemy