Невозможно получить данные при использовании модификации и установке minifyEnabled true

Я пытаюсь получить данные с сервера с помощью Android, я работаю хорошо, когда установлено minifyEnabled false, но когда я устанавливаю minifyEnabled true, я не могу изменить данные, все это равно нулю

Моя версия Java — 17, моя ретро-версия —

com.squareup.retrofit2:retrofit:2.6.0
com.squareup.retrofit2:converter-gson:2.5.0
com.squareup.okhttp3:logging-interceptor:3.12.0

Я пробую другой ответ на stackoverflow

-keepclassmembers,allowobfuscation class * {
  @com.google.gson.annotations.SerializedName <fields>;
}
-dontwarn retrofit2.**
-dontwarn org.codehaus.mojo.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepattributes *Annotation*

-keepattributes RuntimeVisibleAnnotations
-keepattributes RuntimeInvisibleAnnotations
-keepattributes RuntimeVisibleParameterAnnotations
-keepattributes RuntimeInvisibleParameterAnnotations

-keepattributes EnclosingMethod

-keepclasseswithmembers class * {
    @retrofit2.* <methods>;
}

-keepclasseswithmembers interface * {
    @retrofit2.* <methods>;
}

Мой код для вызова API

interface ApiService {
    @POST("/ipay-decode/")
    suspend fun handleDataTest(
        @Body requestBody: BaseRequest,
    ): BaseResponse
}

data class BaseRequest(
    @SerializedName("encrypted")
    val encrypted: String
)

open class BaseResponse {
    @SerializedName("message")
    var message: String = ""
}

Может ли кто-нибудь помочь мне с каким-либо решением?

0
0
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это связано с тем, что ваши модели запутываются при включении минимизации. Чтобы исправить это, добавьте путь к пакету ваших моделей в правила Proguard.

Что-то вроде этого должно работать:

-keep class your.package.name.model.** { *; }
-keepattributes Signature
-keepattributes *Annotation*
-keep class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    private void readObjectNoData();
    Object writeReplace();
    Object readResolve();
}

Другие вопросы по теме