Kotlin moshi android中出错,无法在kitkat设备上运行
该项目可以生成apk,可以从kitkat到oreo使用,但是在升级android studio并开始使用androidx之后,出现了以下问题。只有在启用minifyEnabled=true shrinkResources=true后,才会在kitkat中发生这种情况Kotlin moshi android中出错,无法在kitkat设备上运行,kotlin,moshi,Kotlin,Moshi,该项目可以生成apk,可以从kitkat到oreo使用,但是在升级android studio并开始使用androidx之后,出现了以下问题。只有在启用minifyEnabled=true shrinkResources=true后,才会在kitkat中发生这种情况 java.lang.VerifyError: com/squareup/moshi/kotlin/reflect/KotlinJsonAdapter$IndexedParameterMap at com.squareup.m
java.lang.VerifyError: com/squareup/moshi/kotlin/reflect/KotlinJsonAdapter$IndexedParameterMap
at com.squareup.moshi.kotlin.reflect.KotlinJsonAdapter.fromJson(KotlinJsonAdapter.kt:111)
at com.squareup.moshi.internal.NullSafeJsonAdapter.fromJson(NullSafeJsonAdapter.java:40)
at com.squareup.moshi.kotlin.reflect.KotlinJsonAdapter.fromJson(KotlinJsonAdapter.kt:84)
at com.squareup.moshi.internal.NullSafeJsonAdapter.fromJson(NullSafeJsonAdapter.java:40)
at com.squareup.moshi.JsonAdapter$2.fromJson(JsonAdapter.java:161)
at com.squareup.moshi.JsonAdapter$3.fromJson(JsonAdapter.java:197)
at com.squareup.moshi.JsonAdapter$1.fromJson(JsonAdapter.java:108)
at retrofit2.converter.moshi.MoshiResponseBodyConverter.convert(MoshiResponseBodyConverter.java:45)
at retrofit2.converter.moshi.MoshiResponseBodyConverter.convert(MoshiResponseBodyConverter.java:27)
at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:223)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:186)
at com.jakewharton.retrofit2.adapter.rxjava2.CallObservable.subscribeActual(CallObservable.java:41)
at io.reactivex.Observable.subscribe(Observable.java:12267)
at com.jakewharton.retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
at io.reactivex.Observable.subscribe(Observable.java:12267)
at io.reactivex.internal.operators.observable.ObservableSingleSingle.subscribeActual(ObservableSingleSingle.java:35)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:864)
这是我的程序规则
-dontwarn kotlin.**
-dontwarn kotlin.reflect.jvm.internal.**
-keep class kotlin.reflect.jvm.internal.** { *; }
-keep class kotlin.Metadata { *; }
-keepclassmembers class kotlin.Metadata {
public <methods>;
}
-dontwarn org.jetbrains.annotations.**
-keep class kotlin.** { *; }
-dontwarn kotlin.**
-keepclassmembers class **$WhenMappings {
<fields>;
}
-keep class com.squareup.moshi.kotlin.reflect.** { *; }
-keep class com.squareup.moshi.internel.** { *; }
-keepclassmembers class com.squareup.moshi.kotlin.reflect.** { *; }
-keepclassmembers class com.squareup.moshi.internel.** { *; }
-keepclassmembers class * {
@com.squareup.moshi.FromJson <methods>;
@com.squareup.moshi.ToJson <methods>;
}
-dontwarn javax.annotation.**
-keepclasseswithmembers class * {
@com.squareup.moshi.* <methods>;
}
-keep class **JsonAdapter {
<init>(...);
<fields>;
}
-keep @com.squareup.moshi.JsonQualifier interface *
-keepclassmembers @com.squareup.moshi.JsonClass class * extends java.lang.Enum {
<fields>;
**[] values();
}
-keep public class kotlin.reflect.jvm.internal.impl.builtins.* { public *; }
-keep public class kotlin.reflect.jvm.internal.impl.** { public *; }
-dontwarn kotlin**
-dontwarn kotlin.reflect.jvm.internal**
-保持类kotlin.reflect.jvm.internal.*{*;}
-保持类kotlin.Metadata{*;}
-keepclassmembers类kotlin.Metadata{
公众;
}
-dontwarn org.jetbrains.annotations**
-保持类kotlin.*{*;}
-唐特旺·科特林**
-keepclassmembers类**$WhenMappings{
;
}
-保持类com.squareup.moshi.kotlin.reflect.*{*;}
-保持类com.squareup.moshi.internel.*{*;}
-keepclassmembers类com.squareup.moshi.kotlin.reflect.*{*;}
-keepclassmembers类com.squareup.moshi.internel.*{*;}
-keepclassmembers类*{
@com.squareup.moshi.FromJson;
@com.squareup.moshi.ToJson;
}
-dontwarn javax.annotation**
-keepclassswithmembers类*{
@com.squareup.moshi.*;
}
-保持类**JsonAdapter{
(...);
;
}
-keep@com.squareup.moshi.JsonQualifier接口*
-keepclassmembers@com.squareup.moshi.JsonClass*扩展了java.lang.Enum{
;
**[]值();
}
-保留公共类kotlin.reflect.jvm.internal.impl.builtins.*{public*;}
-保持公共类kotlin.reflect.jvm.internal.impl.*{public*;}
我尝试过其他类似的参考资料,但没有找到答案。请帮我解决这个问题。这似乎是Kotlin的问题,作为一种解决方法,使用
Moshi 1.6.0
和Proguard
而不是R8
->android。enableR8=false