unity tutorial studio minifyenabled features android proguard

tutorial - android studio 3.1 Advertencia: La regla `-keep public class*extiende java.lang.annotation.Annotation{



proguard unity (8)

Recientemente actualicé el estudio de Android pero no he podido encontrar el origen del siguiente problema reportado en android studio 3.1:

Warning: The rule `-keep public class *extends java.lang.annotation.Annotation {

la advertencia parece estar cortada tal vez y falta información. pero parece un problema de protección, aunque recibo esta advertencia cuando construyo la variante de depuración. revisé mis archivos de proguard y no tengo una línea que coincida exactamente con eso. busqué todo el proyecto alguna idea sobre la causa raíz?


  1. abra el archivo build.gradle.
  2. eliminar "multiDexEnabled true".
  3. reconstruir la aplicación.

Como se menciona en los comentarios de la pregunta por @ arcone1, @Vincent Mattana y confirmado por @random, el problema se resuelve en Android Studio 3.2.

Del problema en Google Issue Tracker :

Para aclarar, se trata de una advertencia, no un error, de R8, que usamos para calcular la lista de clases para el dex principal, en una variante legacy multidex. No afecta la salida, y no debe causar fallas de compilación ni de tiempo de ejecución.
Estoy trabajando en una solución para cambiar esta regla de mantenimiento a "-tener clase pública * implementa java.lang.annotation.Annotation", que es semánticamente la misma, y ​​elimina la advertencia.

Por lo tanto, simplemente ignórelo por el momento o hágalo sangrando con Canary (pise bajo su propio riesgo).

ACTUALIZACIÓN : 3.2 se encuentra actualmente en Beta 5.


Eliminé el "multiDexEnabled true" de la configuración de la aplicación gradle defaultConfig y la ADVERTENCIA desaparece:

defaultConfig { ... //multiDexEnabled true } dexOptions { javaMaxHeapSize "Xg" }

buena suerte)


Este problema surge cuando cargas una nueva versión de actualización en Google Play Store y luego de cargar la mayoría de los usuarios, haces clic en retener y luego enviar. No haga clic en Conservar solo cargar y enviar. El archivo apk cargado correctamente y el archivo Conservar se descartan automáticamente y se configuran en modo desactivado.

Recuerde: asegúrese de poner todos los detalles de la nueva actualización diferente a la versión anterior.


Falta un espacio entre el comodín * y la palabra clave se extends . La advertencia en sí misma probablemente no provenga de ProGuard, sino del achicador incorporado de google.

Si no puede encontrarlo en su proyecto, lo más probable es que sea una regla incorrecta de un archivo Proguard de consumidor incluido en los archivos aar dependientes.


Tengo el mismo problema debido a la configuración "multiDexEnabled true" en gradle defaultConfig.

Resolví este problema agregando la "implementación" de dependencia multidex com.android.support:multidex:1.0.3 ''"

android { defaultConfig { ... multiDexEnabled true } ... } dependencies { implementation ''com.android.support:multidex:1.0.3'' }

Referencia: https://developer.android.com/studio/build/multidex


Versión de Gradle: 3.1.4

MultiDex: habilitado

En mi caso, olvidé agregar traducción para algunos recursos de cadenas. Ningún error / advertencia después de agregar.


clase android.support.annotation.Keep es lo que uso (Android Studio 3.1.2 ) ...

-keep @interface android.support.annotation.Keep -keep @android.support.annotation.Keep class * -keepclasseswithmembers class * { @android.support.annotation.Keep <fields>; } -keepclasseswithmembers class * { @android.support.annotation.Keep <methods>; }

hay más indicadores para controlar qué anotaciones mantener:

-keepattributes RuntimeVisibleAnnotations -keepattributes AnnotationDefault -keepattributes *Annotation*

uno puede obtener el resultado sin procesar ejecutando ./gradlew assembleRelease en la pestaña del terminal.

cuando nada en la configuración de ProGuard del proyecto se refiere a Annotation , esta advertencia puede originarse a partir de las reglas de "consumidor" de alguna biblioteca referenciada, que se ofuscará en tiempo de compilación.

por lo tanto, parece ser una advertencia inofensiva, uno puede silenciarla:

-dontwarn java.lang.annotation.Annotation