Traducción no captada SimException: dx.rop.cst.CstInterfaceMethodRef no se puede convertir en com.android.dx.rop.cst.CstMethodRef (Proguard)
Mi equipo y yo hemos estado tratando de resolver esta excepción que estamos recibiendo al tratar de Proguard nuestra aplicación para Android antes de ir a la versión beta.
La excepción que estamos recibiendo es:
- No se puede habilitar Proguard en un proyecto de Android que contenga jsch lib
- Ocultar cadenas en código ofuscado
- Eliminar el registro con Proguard
- Problemas con la protección de Android para su lanzamiento
- AssertionError en Gson EnumTypeAdapter cuando se utiliza Proguard Obfuscation
Error:Uncaught translation error: com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstInterfaceMethodRef cannot be cast to com.android.dx.rop.cst.CstMethodRef Possible causes for this unexpected error include:<ul><li>Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.) <a href="syncProject">Re-download dependencies and sync project (requires network)</a></li><li>The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem. <a href="stopGradleDaemons">Stop Gradle build processes (requires restart)</a></li><li>Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.</li></ul>In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.
Estamos tratando de localizar dónde se está produciendo este error durante Proguarding, pero no estamos muy familiarizados con Proguard para saber cómo encontrar dónde están ocurriendo los fallos.
¿Hay alguna forma de ver dónde se está produciendo este error de traducción? Si supiera que / donde la excepción del molde estaba en mi código quizá podría arreglarlo. Existen referencias en línea que indican que Google Play Services podría causar problemas en otros sdks, pero ya hemos utilizado la herramienta de dependencia y hemos encontrado que está enlazando correctamente a 8.4.0 en todos los sdks.
Nuestra aplicación también está usando multiDexEnabled true flag.
Aquí está nuestro archivo proguard:
# Add project specific ProGuard rules here. # By default, the flags in this file are appended to flags specified # in /development/adt-bundle-mac/sdk/tools/proguard/proguard-android.txt # You can edit the include path and order by changing the proguardFiles # directive in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # Add any project specific keep options here: # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # (1)Annotations and signatures -keepattributes *Annotation*,EnclosingMethod,Signature,InnerClasses -keepnames class com.fasterxml.jackson.** { *; } # (2)Simple XML -keep public class org.simpleframework.**{ *; } -keepclasseswithmembernames class javax.xml.stream.** { *; } ### Simple XML SERIALIZER SETTINGS -keepclassmembers,allowobfuscation class * { @org.simpleframework.xml.* <fields>; @org.simpleframework.xml.* <init>(...); } -keep class javax.xml.stream.**{ *; } -keep class org.simpleframework.xml.**{ *; } # Ignore warnings: We are not using DOM model #-dontwarn com.fasterxml.jackson.databind.ext.DOMSerializer -dontwarn com.fasterxml.jackson.databind.ext.* -dontwarn org.apache.http.** # Keep the pojos used by GSON or Jackson -keep class com.futurice.project.models.pojo.** { *; } # Keep Jackson stuff -dontwarn org.codehaus.** -dontwarn com.bea.xml.stream.** -dontwarn com.google.android.gms.* -dontwarn javax.xml.stream.* -dontwarn javax.annotation.** -dontwarn sun.misc.Unsafe -dontwarn com.google.j2objc.annotations.Weak -dontwarn java.lang.ClassValue -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement -dontwarn okio.* -dontwarn org.apache.** -dontwarn org.simpleframework.xml.stream.* -dontwarn rx.internal.util.unsafe.* # Keep leakcanary stuff -dontwarn com.squareup.haha.** -dontwarn com.squareup.leakcanary.** # Marshmallow removed Notification.setLatestEventInfo() -dontwarn android.app.Notification # warnings -dontwarn butterknife.internal.* -dontwarn com.conviva.streamerProxies.* -dontwarn com.anvato.** -dontwarn com.apptentive.android.sdk.** -dontwarn com.comscore.instrumentation.** -dontwarn com.squareup.okhttp.** -dontwarn com.urbanairship.json.** -dontwarn tv.freewheel.renderers.html.* # notes -dontnote com.android.vending.** -dontnote com.anvato.** -dontnote com.conviva.** -dontnote com.facebook.stetho.inspector.** -dontnote com.google.android.gms.** -dontnote com.google.gson.internal.** -dontnote com.google.vending.** -dontnote com.squareup.okhttp.** -dontnote com.urbanairship.** -dontnote tv.freewheel.extension.medialets.** -dontnote org.apache.** -dontnote org.json.** #Note: duplicate definition of library class -dontnote android.net.http.** # For RxJava: -dontwarn org.mockito.** -dontwarn org.junit.** -dontwarn org.robolectric.** -dontwarn rx.md.internal.schedulers.NewThreadWorker #-ignorewarnings -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver #-keep public class * extends android.content.ContentProvider #-keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference ##-keep public class com.android.vending.licensing.ILicensingService #-keep public class com.fasterxml.jackson.databind.ObjectMapper -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet, int); } #-keepclasseswithmembernames class * { # public onStart(); #} -keep public class com.fasterxml.jackson.** { public void set*(***); public *** get*(); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; public void set*(***); public *** get*(); } -keep class * { public void *(android.view.View); }
Si hay más información que necesita, por favor hágamelo saber y estaremos encantados de proporcionar, esto está bloqueando actualmente nuestra capacidad para publicar una versión beta.
- ¿Cómo configurar proguard para amazon iap?
- Proguard - AppCompat no admite las características del tema actual después de proguard / minify
- Cómo utilizar -assumenosideeffects clase android.util.Log en mi aplicación
- Android Proguard, eliminando todas las sentencias de registro y combinando paquetes
- Proguard para ofuscar el código de Android con la biblioteca DNSJava
- Proguard Nota para la clase desconocida 'Objeto' con Android Studio y Gradle
- Cómo generar mapping.txt con Eclipse?
- Proguard devolvió error con la biblioteca de Servicios de Google Play
Así que para nosotros, parece que la solución es eliminar:
-keep class * { public void *(android.view.View); }
De Proguard, ya que debe haber algún conflicto al usar esto con varias bibliotecas. Espero que esto ayude a otros que se topan con este problema, ya que estaban atrapados por 6 días en esto.
Debe tenerse en cuenta que a continuación, debe añadir explícitamente sus referencias a los controladores de clics o al menos reducirlo , vea el origen de esta regla aquí: Android Proguard – cómo mantener los controladores onClick sólo se hace referencia desde los diseños XML
- MediaRecorder y UDP (DatagramSocket) en Android
- Cómo obtener datos de cordova-plugin-nativestorage en android java