我发现较旧的问题涉及同一主题,但使用最新版本的可用答案都不适用于我。
我在我的项目中使用Retrofit。当我尝试组装时,我收到以下错误:
警告:retrofit.client.OkClient:无法找到引用的类com.squareup.okhttp.OkHttpClient
我使用以下内容,但没有一个有用:
-keepattributes Signature
-keep class retrofit.** { *; }
-keep class retrofit.http.** { *; }
-keep class retrofit.client.** { *; }
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-keep class com.google.gson.** { *; }
-keep class com.google.inject.* { *; }
-keep class org.apache.http.* { *; }
-keep class org.codehaus.mojo.** { *; }
-keep class org.apache.james.mime4j.* { *; }
-keep class javax.inject.* { *; }
-keep class sun.misc.Unsafe { *; }
-libraryjars libs/acra-4.5.0.jar
-libraryjars libs/radial-menu-v4.jar
-dontwarn javax.xml.stream.events.**
-dontwarn rx.**
-dontwarn org.apache.lang.**
# Application classes that will be serialized/deserialized over Gson
-keep class com.example.package.network.** { *; }
最近是否有人遇到此问题并已解决?
答案 0 :(得分:46)
-keepattributes Signature
-keepattributes *Annotation*
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-dontwarn com.squareup.okhttp.**
-dontwarn rx.**
-dontwarn retrofit.**
-keep class retrofit.** { *; }
-keepclasseswithmembers class * {
@retrofit.http.* <methods>;
}
-keep class sun.misc.Unsafe { *; }
#your package path where your gson models are stored
-keep class com.example.models.** { *; }
我已经使用上面的proguard文本进行了改造与OKHTTP。
修改强>: 很好的回购引用许多流行的图书馆 https://github.com/krschultz/android-proguard-snippets
答案 1 :(得分:5)
可能看似微不足道,但你试过包括这条线吗? (如果你不使用okhttp。)
-dontwarn com.squareup.okhttp.**
Square是内部没有使用Proguard的,所以虽然他们的库可能会对使用的内容做出一些假设,但如果你的项目没有使用它,你可以放心地忽略它。我和毕加索有同样的问题,这也为我解决了这个问题。
答案 2 :(得分:2)
此配置适用于使用gson进行改造。
#Using for retrofit & gson
-keep class com.google.gson.** { *; }
-keep class com.google.inject.** { *; }
-keep class org.apache.http.** { *; }
-keep class org.apache.james.mime4j.* { *; }
-keep class javax.inject.** { *; }
-keep class retrofit.** { *; }
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
-keepclassmembernames interface * {
@retrofit.http.* <methods>;
}
-keep interface retrofit.** { *;}
-keep interface com.squareup.** { *; }
-dontwarn rx.**
-dontwarn retrofit.**
此外,您需要添加所有与改造一起使用的POJO类,如下所示。
-keep class com.google.gson.examples.android.model.** { *; }
-keep class com.packagename.your.pojo.models.** { *; }
keepattributes如下所示
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes Deprecated
-keepattributes SourceFile
-keepattributes LineNumberTable
-keepattributes *Annotation*
-keepattributes EnclosingMethod