Android Gradle tabanlı projeme -Xlint: işaretsiz nasıl eklenir?


138

Kök build.gradledosyasına aşağıdakileri eklemeye çalıştım :

subprojects {
    gradle.projectsEvaluated {
        tasks.withType(Compile) {
            options.compilerArgs << "-Xlint:unchecked -Xlint:deprecation"
        }
    }
}

Ama bunu alıyorum:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':Libraries:ActionBarSherlock:compileRelease'.
> invalid flag: -Xlint:unchecked -Xlint:deprecation

Neyi yanlış yapıyorum?


Seçenekler gibi tek bir parametre ile herşey yolunda mı? CompilerArgs << "-Xlint: kullanımdan kaldırma" ??
shakalaca

1
Evet çalışıyor. Ben değiştirdim "-Xlint:unchecked" << "-Xlint:deprecation"ve her ikisi için de çalıştı :) Bununla bir cevap oluşturmak istiyorsanız, memnuniyetle kabul edilir olarak işaretleyeceğim.
rfgamaral

@RicardoAmaral belki de resmen kendinize cevap vermeli ve bu shakalaca'nın yorumuna bakmalısınız.
Dandre Allison

Yanıtlar:


232

Benim için işe yarayan buydu: (projenizin build.gradle)

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

1
Bağımlılıklar hariç, yalnızca ana modül için nasıl yapardınız?
aleb

4
@aleb, ayarı yalnızca geçerli build.gradle öğesine uyguladığınızı ve tüm build.gradle öğelerine (yani allprojects) uyguladığınızı varsayalım. Bu durumda, bir allprojectskapağa sarmayın .
TheChrisPratt

Bunun Lint koşularında fark yaratması mı gerekiyor? Nedense, Lint'im -Xlint:uncheckedayardan bağımsız olarak aynı uyarı mesajını görüntülüyor .
IgorGanapolsky

Ben "build.gradle" yerine "build-extras.gradle" eklemek daha iyi olduğunu düşünüyorum.
Maxim

2
Teşekkürler, bu cevabın nereden geldiğinden emin olmasam da bu benim için çalıştı. Varsayılan olarak, bu seçenekleri ekleyene kadar linter, sorun hakkında hiçbir bilgi içermeyen bir hata oluşturacaktır.
JHS

55

Feragatname: Bu yanıtta 10'dan fazla oy hakkı bulunmasına rağmen, sorunu bir Android projesi bağlamında ele almıyor . Ancak Google, bu soruyu Android dışındaki projeler bağlamında bulur. Böylece bu cevabı bu insanlar için saklıyorum.

JavaCompile'a göre , aşağıdakiler çözüm gibi görünüyor:

compileJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

Test senaryoları için olmasını istiyorsanız, compileTestJava

compileTestJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

1
Bu üst düzey build.gradle veya modül içinde mi?
IgorGanapolsky

5
Modülün build.gradle dosyasında.
Dr. Simon Harrer

3
İlk pasajın içeriğini genişletebilir misiniz? Nereye gradle.buildgidiyor?
not2qubit

Bu çözüm, javaeklentiyi build.gradledosyalarına uygulayan ancak com.android.applicationveya com.android.libraryeklentiyi uygulayan modüller için çalışmaz .
Adil Hussain

2
@koppor: önceki yoruma bakınız. Android geliştiricileri için çalışmaz. Bu "... Android gradle tabanlı proje" başlıklı bir iş parçacığı için bir sorun.
Robin Davies

7

Bunu build.gradle dosyanıza (kök dizini) ekleyin :

allprojects { // Projects
   gradle.projectsEvaluated {
      tasks.withType(JavaCompile) {
         options.encoding = 'UTF-8'
         options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
      }
   }
}

4

Kullanan herkes gradle.ktsiçin basit build.gradledosyayla eşleşmek üzere aşağıdakileri kullanın

build.gradle.kts

afterEvaluate {
        tasks.withType(JavaCompile::class) {
            options.compilerArgs.add("-Xlint:unchecked")
            options.compilerArgs.add("-Xlint:deprecation")
        }
    }

build.gradle

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

3

Ayarlamak için farklı bir derleme argümanı vardı. Aşağıdakiler benim için çalışıyor.

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-XDignore.symbol.file"
        options.bootClasspath = "$System.env.JAVA_HOME/jre/lib/rt.jar"
    }
}

Güvenli olmayan ve sun.swing. * Sınıfları için JDK 1.8 ve üstü için önyükleme sınıf yolunu ayarlamanız gerekir. Özellikle ikincisi için kaynak kodunu düzeltin, çünkü JRE için gelecek ve gelecek modüler uygulama olan Jigsaw Java 9 nihayet bu yöntemlere erişilemez (!). Kendinizi uyarın.


0

Sorunun Gradle subprojectsconfiguration parametresini kullanmakla ilgili olduğundan emin değilim , ancak kullandığınız sözdizimi:

options.compilerArgs << "-Xlint:unchecked -Xlint:deprecation"

Bu benim için çalıştı:

subprojects {
  gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
      options.compilerArgs += [
        '-Xlint:unchecked', // Shows information about unchecked or unsafe operations.
        '-Xlint:deprecation', // Shows information about deprecated members.
      ]
    }
  }
}

veya

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

Yalnızca bir seçenek eklemek istiyorsanız (normalde daha fazlasını eklersiniz), görevin içine JavaCompileeklemeniz yeterlidir:

options.compilerArgs << "-Xlint:unchecked"

Lint hakkında daha fazla bilgiyi burada ve burada bulabilirsiniz .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.