Bar*_*ans 7 android android-gradle-plugin retrofit retrofit2
我在我的应用程序中使用改造。一切正常,但是当我创建应用程序的发布版本时,一些调用不起作用。
可能是什么问题?我已经minifyEnabled
在我的 gradle 文件中禁用了。
编辑: 发现真正的问题:我通过特定的 API 调用获取用户数据。我将其映射到以下类:
String ID;
String user_login;
String user_nicename;
String user_email;
String display_name;
Run Code Online (Sandbox Code Playgroud)
出于某种原因,除了 ID 之外的所有字段都已填写。当我不使用发布但调试时,ID 字段被填充。
尝试这个:
-dontnote okhttp3.**, okio.**, retrofit2.**
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
Run Code Online (Sandbox Code Playgroud)
如果上面的代码不起作用,那么@Keep
向您的模型类添加注释,如下所示。
import androidx.annotation.Keep;
@Keep
public class Blog {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
对我来说,我试图使用改造来获取数据。我的模型如下:
data class ChecksumResponseEntity(
@SerializedName("code")
val code: Double,
@SerializedName("message")
val message: String,
@SerializedName("checksum")
val checksum: String
)
Run Code Online (Sandbox Code Playgroud)
问题是所有值都被初始化为 null,而不是响应中的值。
在 proguard 文件中添加了以下内容,但它对我没有帮助:
-dontnote okhttp3.**, okio.**, retrofit2.**
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
Run Code Online (Sandbox Code Playgroud)
我尝试将 @Keep 注释添加到我的模型文件中,如下所示:
@Keep
data class ChecksumResponseEntity(
@SerializedName("code")
val code: Double,
@SerializedName("message")
val message: String,
@SerializedName("checksum")
val checksum: String
)
Run Code Online (Sandbox Code Playgroud)
不知道为什么会发生,但添加 @Keep 为我解决了这个问题。
确保提供了具体的改造规则。如果你已经启用minifyEnabled=true
了
proguard-rules.pro
在您的文件中添加以下改造规则
-dontnote okhttp3.**, okio.**, retrofit2.**
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2710 次 |
最近记录: |