ProGuard no funciona como se esperaba después de la actualización de Android Studio
Desde que actualizé Android Studio a la versión 1.2.1.1
Tengo el siguiente problema:
Cada vez que construyo una variante de versión / compilación de la versión de mi aplicación, obtengo un NoClassDefFoundError
en la biblioteca Adjust que he incluido en el proyecto como un módulo de biblioteca.
- Android Proguard ZipException al generar APK firmado
- Xamarin Android ProGuard Habilitar
- Proguard minifyEnabled true para la compilación de depuración, no funciona en pre-Lollipop
- Construir apk con error gradle
- Respuestas de ajuste retro se bloquean con pro guard
El stracktrace:
java.lang.NoClassDefFoundError: com.adjust.sdk.AdjustConfig at de.myapp.GlobalApp.prepareAdjust(GlobalApp.java:111) at de.myapp.GlobalApp.onCreate(GlobalApp.java:71) at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:999) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4151) at android.app.ActivityThread.access$1300(ActivityThread.java:130) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1255) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method)
Correspondiente parte de mi código:
AdjustConfig config = new AdjustConfig(this, someString, otherString);
Cuando desactivo Proguard con minifyEnabled false;
En mi build.gradle
, el error se ha ido.
Mi proguard-rules.pro se parece a esto:
-keepattributes ** -keep class !android.support.v7.internal.view.menu.**,** {*;} -dontpreverify -dontoptimize -dontshrink -dontwarn **
Estas reglas de Proguard podrían parecer un poco extrañas porque no hacen sino una cosa: ofuscar las clases en el paquete android.support.v7.internal.view.menu
. Este procedimiento es una solución para un problema conocido de la biblioteca de asistencia de Android en los dispositivos Samsung .
Aún más confuso, el NoClassDefFoundError
sólo se produce sólo los dispositivos que ejecutan Android < 5.0
.
Cualquier idea sobre lo que la razón podría ser o cómo arreglar esto?
- Encontrar el rastro de pila ofuscado generado por proguard
- Proguard flag dontobfuscate causes Traducción interrumpida excepción
- Proguard de Android - ClassNotFoundException
- ¿Cómo hacer que org.apache.http.legacy funcione con ProGuard (azure mobile services)?
- ¿Cómo actualizar ProGuard para Android?
- ¿Cómo usar el nuevo Android 2.0 Shrinker y Resource Shrinker juntos?
- Android java.lang.AssertionError: java.lang.NoSuchMethodException - Proguard
- NoClassDefFoundError: android.support.design.internal.NavigationMenu en Android 4.2.2 (wiko)
La documentación dice:
Si está utilizando Proguard, agregue estas líneas a su archivo Proguard:
-keep class com.adjust.sdk.** { *; } -keep class com.google.android.gms.common.** { *; } -keep class com.google.android.gms.ads.identifier.** { *; }
- Pasar atributos a la vista secundaria en vistas compuestas
- Sugerencia de la búsqueda de Android de la red