改造不适用于应用程序的发布版本

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 字段被填充。

Poo*_*oja 9

尝试这个:

-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)


Tar*_*run 7

对我来说,我试图使用改造来获取数据。我的模型如下:

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 为我解决了这个问题


Dhi*_*ren 3

确保提供了具体的改造规则。如果你已经启用minifyEnabled=true

proguard-rules.pro在您的文件中添加以下改造规则

-dontnote okhttp3.**, okio.**, retrofit2.**
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
Run Code Online (Sandbox Code Playgroud)