Android -在发布模式下,带有继承界面的Retrofit无法正常工作

llmtgqce  于 2023-02-27  发布在  Android
关注(0)|答案(1)|浏览(109)

目前我正面临着这个奇怪的问题。
我已经创建了改进示例,并且有两个API接口。ApiClientOld接口实现了ApiClient接口并覆盖了基本方法。
我正在为两个接口创建一个带有改型的示例,但是两个示例都引用了基方法。
请检查下面的示例代码。

以下示例在调试模式下运行良好,但在发布模式下不运行。

我很想知道为什么代码是这样工作的。请任何人帮助我这个?提前感谢!!

interface ApiClient {
    @GET("owner/details")
    suspend fun getDetails(): Response<Details>
}

interface ApiClientOld : ApiClient {
    @GET("user/details")
    override suspend fun getDetails(): Response<Details>
}

fun createApiClient(retrofit: Retrofit, useOld: Boolean): ApiClient {
    return if (useOld)
        retrofit.create(ApiClientOld::class.java)
    else
        retrofit.create(ApiClient::class.java)
}

suspend fun makeAPI(retrofit: Retrofit) {
    val apiClient = createApiClient(retrofit, useOld=true)
    val response = apiClient.getDetails()
    // This should call the overridden method in ApiClientOld (user/details path)
    // But It is calling the base ApiClient (owner/details path)
}

makeAPI函数应从派生接口调用API(用户/详细信息)。但它调用的是基本接口方法(所有者/详细信息)。--仅在发布模式下
版本配置:

{
debuggable false
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
hgtggwj0

hgtggwj01#

请在版本配置中创建minifyEnabled false.再试一次

相关问题