2016-05-05 11 views
6

mein Team und ich habe versucht, diese Ausnahme zu lösen, die wir erhalten, wenn Sie versuchen, Proguard zu lösen unsere Android-App vor der Beta-Version.Uncaught Translation SimException: dx.rop.cst.CstInterfaceMethodRef kann nicht in com.android.dx.rop.cst.CstMethodRef (Proguard)

Die Ausnahme, die wir bekommen ist:

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. 

Wir versuchen, ausfindig zu machen, wo dieser Fehler während Proguarding auftritt, aber nicht sehr vertraut zu sein mit Proguard zu wissen, wie zu finden, wo die Fehler auftreten.

Gibt es eine Möglichkeit zu sehen, wo dieser Übersetzungsfehler auftritt? Wenn ich wüsste, wo die Cast Ausnahme in meinem Code ist, könnte ich es vielleicht beheben. Es gibt Online-Referenzen, die angeben, dass Google Play-Dienste Probleme in anderen SDKs verursachen können, aber wir haben das Abhängigkeitstool bereits verwendet und festgestellt, dass es in allen SDKs ordnungsgemäß mit 8.4.0 verknüpft ist.

Unsere App verwendet auch multiDexEnabled True-Flag.

Hier ist unsere proguard Datei:

# 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); 
} 

Wenn es mehr Informationen, die Sie brauchen, ist lassen Sie es mich wissen, und ich werde glücklich sein, zur Verfügung zu stellen, das zur Zeit blockiert unsere Fähigkeit, eine Beta zu veröffentlichen.

Antwort

3

Also für uns, so scheint es, die Lösung zu entfernen ist:

-keep class * { 
    public void *(android.view.View); 
} 

von Proguard, da muss es einen Konflikt, wenn diese mit verschiedenen Bibliotheken. Ich hoffe, dass dies anderen hilft, die auf dieses Problem stoßen, da wir 6 Tage daran festhielten.

Es ist zu beachten, dass Sie dann Ihre Referenzen explizit Handler hinzufügen sollten sollte klicken oder zumindest verengt es nach unten, Ursprung dieser Regel siehe hier: Android Proguard - how to keep onClick handlers only referenced from XML layouts

0

Ich habe mit diesem Fehler zu kämpfen CreativeSDK auch wurde nach der Zugabe von . Hier hinzufügen, falls es jemandem in der Zukunft hilft. Der genaue Fehler war:

Uncaught Übersetzungsfehler: com.android.dx.cf.code.SimException: com.android.dx.rop.cst.CstMethodRef kann nicht gegossen werden, um com.android.dx.rop.cst .CstInterfaceMethodRef

und in meinem Fall Lösung war

-keep class retrofit.** { *; } 

von Proguard

entfernen