我在android项目中使用了改造2,okhttp和moshi-jsonapi。
Debug Build apk和应用程序是正确的,但我在构建签名apk(发布模式)中有错误,我在dontwarn
中使用proguard-rules.pro
来传递构建签名的apk,但我的应用程序处于签名模式每次从Callback运行失败。
可投掷的消息:
platform java.util.LinkedHashMap<java.lang.String,a.a.a.j> annotated [] requires explicit JsonAdapter to be registered
我从未使用过LinkedHashMap!
当使用minifyEnabled false
签名的apk并且应用程序是正确的但它不是安全的解决方案。
proguard-rules.pro:
-dontwarn okio.**
-keep class okio.** { *; }
-dontwarn retrofit2.**
-dontwarn org.codehaus.mojo.**
-dontnote retrofit2.Platform
-dontnote retrofit2.Platform$IOS$MainThreadExecutor
-dontwarn retrofit2.Platform$Java8
-keep class retrofit2.** { *; }
-keepattributes Exceptions
-keepattributes Signature
-keepattributes RuntimeVisibleAnnotations
-keepattributes RuntimeInvisibleAnnotations
-keepattributes RuntimeVisibleParameterAnnotations
-keepattributes RuntimeInvisibleParameterAnnotations
-keepattributes EnclosingMethod
-keepclasseswithmembers class * {
@retrofit2.http.* <methods>;
}
-keepclasseswithmembers interface * {
@retrofit2.* <methods>;
}
答案 0 :(得分:1)
在proguard中使用此代码后解决了它:
-keepclassmembers public abstract class moe.banana.jsonapi2.** {
*;
}
答案 1 :(得分:0)
您可能需要保持模型属性不受限制。如果所有模型都在一个包中,那么您可以使用,
-keepclassmembers class com.example.model.** { <fields>; }
或者您必须使用以下
@SerializedName("name")
public String name;
我无法使用以下代码回复评论...所以只需编辑答案..你介意尝试这个吗?
-keepclassmembers class ** {
@com.squareup.moshi.FromJson *;
@com.squareup.moshi.ToJson *;}