我的界面
interface ApiService {
@GET("URL")
fun getCatList(
@Query("var1") var1: String,
@Query("var2") var2: String,
): Call<List<CatListItem>?>
}
我的助手
class ApiClient {
companion object {
private lateinit var retrofit: Retrofit
fun getClient(): Retrofit {
val interceptor = HttpLoggingInterceptor()
interceptor.level = HttpLoggingInterceptor.Level.BODY
val client = OkHttpClient.Builder().addInterceptor(interceptor).build()
retrofit = Retrofit.Builder()
.baseUrl(ApiConstants.baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build()
return retrofit
}
}
}
我的API
override fun getCatList(var1: String, var2: String) {
val apiInterface: ApiService = ApiClient.getClient().create(ApiService::class.java)
val call = apiInterface.getCatList(var1, var2)
call.enqueue(object : Callback<List<CatListItem>?> {
override fun onResponse(
call: Call<List<CatListItem>?>, response: Response<List<CatListItem>?>
) {
if (response.isSuccessful) {
val answer = CatList(response.body())
return
}
}
override fun onFailure(call: Call<List<CatListItem>?>, t: Throwable) {
call.cancel()
}
})
}
我的数据类
data class CatList(
@field:SerializedName("catList")
val catList: List<CatListItem?>? = null
)
data class CatListItem(
@field:SerializedName("name")
val name: String? = null,
)
我的JSON
[{"name":"1"},{"name":"2"}]
我的ProGuard规则
-keep,allowobfuscation,allowshrinking interface retrofit2.Call
-keep,allowobfuscation,allowshrinking class retrofit2.Response
-keep,allowobfuscation,allowshrinking class retrofit2.*
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
-keep class com.google.gson.** { *; }
-keep class com.google.gson.reflect.** { *; }
-keep class com.google.gson.stream.** { *; }
-keep class com.google.gson.internal.** { *; }
-keep class * implements java.io.Serializable { *; }
-keepclassmembers class * {
@com.google.gson.annotations.SerializedName <fields>;
}
-keepclassmembers enum * {
*;
}
在发布模式下登录,除发布模式外,在调试模式下一切正常
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to q2.a
at o2.c.run(Unknown Source:385)
at java.util.TimerThread.mainLoop(Timer.java:562)
at java.util.TimerThread.run(Timer.java:512)
问题出在APK发布模式下,在调试模式下一切正常。
我改变了暂停,但什么都没变。还测试了一个runBlocking与暂停的乐趣在接口,没有什么变化。好像少了什么东西。我猜这是在内部处理名单时发生的?
我需要你的帮助来解决这个问题。提前感谢您的支持。
1条答案
按热度按时间oug3syen1#
好的,谢谢你的回答。
我的问题的解决方案是:- 评论我的有趣getCatList(var 1:字符串,变量2:String). -编译释放。- 然后取消注解我的函数。- 然后重新编译
我不知道为什么这是解决这个问题的方法。
但对我很有效。
如果有人能告诉我为什么这一点,将帮助我了解,如果在这个项目中错过了什么。
待会再说