Android Moshi Json注释不适用于proguard
我随后添加了对moshi和proguard规则的gradle依赖,然后编写代码进行验证Android Moshi Json注释不适用于proguard,android,json,moshi,Android,Json,Moshi,我随后添加了对moshi和proguard规则的gradle依赖,然后编写代码进行验证 data class Car( @Json(name = "low_speed") val lowSpeed: Int, @Json(name = "high_speed") val highSpeed: Int ) 当我在调试模式下运行它时,它显示“10+20”,这是预期的,但当我在发布模式下运行(它启用了proguard)时,我看到了“0+0” 我的proguard-rules.pro
data class Car(
@Json(name = "low_speed") val lowSpeed: Int,
@Json(name = "high_speed") val highSpeed: Int
)
当我在调试模式下运行它时,它显示“10+20”,这是预期的,但当我在发布模式下运行(它启用了proguard)时,我看到了“0+0”
我的proguard-rules.pro文件:
# Retain generic type information for use by reflection by converters and adapters.
-keepattributes Signature
# Retain declared checked exceptions for use by a Proxy instance.
-keepattributes Exceptions
# Common Stuff to Keep
-keepattributes *Annotation*
-keepattributes JavascriptInterface
# OkHttp
-dontwarn javax.annotation.**
-keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase
-dontwarn org.codehaus.mojo.animal_sniffer.*
-dontwarn okhttp3.internal.platform.ConscryptPlatform
# okIo
-dontwarn okio.**
#moshi
# JSR 305 annotations are for embedding nullability information.
-keepclasseswithmembers class * {
@com.squareup.moshi.* <methods>;
}
-keep @com.squareup.moshi.JsonQualifier interface *
# Enum field names are used by the integrated EnumJsonAdapter.
# values() is synthesized by the Kotlin compiler and is used by EnumJsonAdapter indirectly
# Annotate enums with @JsonClass(generateAdapter = false) to use them with Moshi.
-keepclassmembers @com.squareup.moshi.JsonClass class * extends java.lang.Enum {
<fields>;
**[] values();
}
#moshi-kotlin
-keep class kotlin.reflect.jvm.internal.impl.builtins.BuiltInsLoaderImpl
-keepclassmembers class kotlin.Metadata {
public <methods>;
}
我想我错过了moshi和proguard的一些东西,但我真的不知道它是什么
@JsonClass(generateAdapter = false)
和将这些行添加到proguard:
-keepclassmembernames @com.squareup.moshi.JsonClass class * extends java.lang.Enum {
<fields>;
}
-keepclassmembernames@com.squareup.moshi.JsonClass class*扩展java.lang.Enum{
;
}
Credit->你能分享你的模块gradle文件吗?你最终找到了解决方案吗?我遇到了一个类似的问题。
@JsonClass(generateAdapter = false)
-keepclassmembernames @com.squareup.moshi.JsonClass class * extends java.lang.Enum {
<fields>;
}