java android gradle android-gradle javac

java - ¿Cómo suprimir “advertencia: ignorando el atributo InnerClasses para una clase interna anónima” con Gradle?



android android-gradle (2)

¿Cómo suprimir "advertencia: ignorando el atributo InnerClasses para una clase interna anónima" con Gradle?

  • Esta no es una pregunta duplicada
  • Esto no durante Proguard ni quiero suprimir el uso de Proguard
  • Me gustaría suprimir haciendo normal ./gradlew assembleDebug (ya que es assertj-core - ./gradlew testDebug )

Dependencia:

dependencies { testCompile "org.assertj:assertj-core:1.7.1" }

Advertencia:

Dex: warning: Ignoring InnerClasses attribute for an anonymous inner class (org.assertj.core.internal.cglib.reflect.FastClassEmitter$3) that doesn''t come with an associated EnclosingMethod attribute. This class was probably produced by a compiler that did not target the modern .class file format. The recommended solution is to recompile the class from source, using an up-to-date compiler and without specifying any "-target" type options. The consequence of ignoring this warning is that reflective operations on this class will incorrectly indicate that it is *not* an inner class.

Algo como:

tasks.withType(JavaCompile) { sourceCompatibility = JavaVersion.VERSION_1_7 targetCompatibility = JavaVersion.VERSION_1_7 configure(options) { compilerArgs << "-Xlint:-options" // Turn off "missing" bootclasspath warning } }

¿Qué compilerArgs puedo agregar para suprimir esta advertencia?

Referencias:


Tuve el mismo problema cuando intenté usar una biblioteca de terceros hace un tiempo. Ese lib fue compilado para Java 1.3. Pude arreglarlo obteniendo la fuente de esa biblioteca y compilando un archivo jar por mi cuenta. Esto solo funciona, por supuesto, si las fuentes de esa biblioteca están disponibles y listas para compilar.