获得Pro-guard后无法find的常见超类

启用亲卫后,我收到了大约1000个警告。 所以在添加规则并在Stackoverflow上跟随此答案后,我现在收到1个警告和1个错误。

这就是我现在得到的。

警告:处理任务java.io.IOException时出现exception:java.lang.IllegalArgumentException:无法find[com / loopj / android / http / MySSLSocketFactory](带有1个已知超类)和[java / security /]的常见超类KeyStore](有2个已知的超类)错误:任务’:app:transformClassesAndResourcesWithProguardForRelease’的执行失败。

java.io.IOException:java.lang.IllegalArgumentException:找不到常见的超级类[com / loopj / android / http / MySSLSocketFactory](带有1个已知的超类)和[java / security / KeyStore](已知2个)超级class)

proguard-rules.pro

-optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontskipnonpubliclibraryclassmembers -dontpreverify -verbose -dump class_files.txt -printseeds seeds.txt -printusage unused.txt -printmapping mapping.txt -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -allowaccessmodification -keepattributes *Annotation* -renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable -repackageclasses '' #---------------TEST -dontwarn javax.annotation.** -keep class com.google.** -dontwarn com.google.** -keep class com.conviva.** -dontwarn com.conviva.** -keep class com.loopj.android.http.** -keep class org.apache.http.** -keep class rx.internal.util.** -keep class com.algolia.search.** -dontwarn com.loopj.android.http.** -dontwarn org.apache.http.** -dontwarn rx.internal.util.** -dontwarn com.algolia.search.** -keep public class android.net.http.SslError -keep public class android.webkit.WebViewClient -dontwarn android.webkit.WebView -dontwarn android.net.http.SslError -dontwarn android.webkit.WebViewClient -keep class com.loopj.android.** { *; } -keep interface com.loopj.android.** { *; } -assumenosideeffects class android.util.Log { public static boolean isLoggable(java.lang.String, int); public static int v(...); public static int i(...); public static int w(...); public static int d(...); public static int e(...); } #---------------TEST -keep public class * extends android.app.Activity -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 -dontnote com.android.vending.licensing.ILicensingService # Explicitly preserve all serialization members. The Serializable interface # is only a marker interface, so it wouldn't save them. -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } # Preserve all native method names and the names of their classes. -keepclasseswithmembernames class * { native ; } -keepclasseswithmembernames class * { public (android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public (android.content.Context, android.util.AttributeSet, int); } # Preserve static fields of inner classes of R classes that might be accessed # through introspection. -keepclassmembers class **.R$* { public static ; } # Preserve the special static methods that are required in all enumeration classes. -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep public class * { public protected *; } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } ##---------------End: proguard configuration common for all Android apps ---------- #---------------Begin: proguard configuration for support library ---------- -keep class android.support.v4.app.** { *; } -keep interface android.support.v4.app.** { *; } -keep class com.actionbarsherlock.** { *; } -keep interface com.actionbarsherlock.** { *; } # The support library contains references to newer platform versions. # Don't warn about those in case this app is linking against an older # platform version. We know about them, and they are safe. -dontwarn android.support.** -dontwarn com.google.ads.** ##---------------End: proguard configuration for Gson ---------- ##---------------Begin: proguard configuration for Gson ---------- # Gson uses generic type information stored in a class file when working with fields. Proguard # removes such information by default, so configure it to keep all of it. -keepattributes Signature # For using GSON @Expose annotation -keepattributes *Annotation* # Gson specific classes -keep class sun.misc.Unsafe { *; } #-keep class com.google.gson.stream.** { *; } # Application classes that will be serialized/deserialized over Gson -keep class com.example.model.** { *; } ##---------------End: proguard configuration for Gson ---------- # 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 *; #} 

gradle这个

 android { compileSdkVersion 25 buildToolsVersion "24.0.3" useLibrary 'org.apache.http.legacy' } 

编辑

这就是我在app build.gralde文件中启用pro-guard的方式,我正在使用'proguard-android-optimize.txt

  buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } 

Solutions Collecting From Web of "获得Pro-guard后无法find的常见超类"

添加这个:

 -keep class cz.msebera.android.httpclient.** { *; } -dontwarn cz.msebera.android.httpclient.** 

更新:试试这个:

 -keep class com.loopj.android.** { *; } -keep interface com.loopj.android.** { *; } -keep class cz.msebera.android.** { *; } -keep interface cz.msebera.android.** { *; } -dontwarn cz.msebera.android.** -dontwarn com.loopj.android.** 

请检查您是否使用任何第三方库(如retrofit或okHttp)进行网络呼叫。 在这种情况下,例如,改造已经删除了支持“org.apache.http包”。 尝试这个…

 -dontwarn org.apache.http.** -dontwarn android.net.http.AndroidHttpClient -dontwarn retrofit.client.ApacheClient$GenericEntityHttpRequest -dontwarn retrofit.client.ApacheClient$GenericHttpRequest -dontwarn retrofit.client.ApacheClient$TypedOutputEntity 

你可以在这里参考: https : //github.com/square/retrofit/issues/1019