目前我正面临着这个奇怪的问题。
我已经创建了改进示例,并且有两个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
}
1条答案
按热度按时间hgtggwj01#
请在版本配置中创建
minifyEnabled false
.再试一次