Proguard изменяет имя переменной строкового запроса при отправке на сервер

#java #android #proguard

#java #Android #защитник

Вопрос:

Я использую строковый запрос при создании Signapk Proguard Изменение имени переменной находится в a b c d e f Как я могу с этим справиться это проблема только в одном запросе все остальные запросы работают нормально в этом запросе я использую GSON Вот мой код

senditems_ — это список массивов, содержащий 5 записей учащихся

 String studentBatchListString = new Gson().toJson(send_items_);
@Override
protected Map<String, String> getParams() throws AuthFailureError { 
   Map<String, String> parameters = new HashMap<String, String>(); 
   Log.i("timessendreq","send");                    
   parameters.put("list_items",studentBatchListString);
   return parameters;
}
 

Я использую запрос строки volley, имя моего класса (Checkoutinfo)
имя пакета com.app.trasfer

Ответ №1:

Сохраните объект User Student, добавив аннотацию @Keep в начало вашего класса, что-то вроде приведенного ниже

 @Keep
class Student{
int id;
}
 

Ответ №2:

У вас есть два варианта ее решения

  1. Используйте аннотации в коде и добавьте правильную конфигурацию proguard

Сериализованное имя поля

 @SerializedName("keyType")
String keyType;
 

конфигурация proguard

 -keepclassmembers,allowobfuscation class * {
    @com.google.gson.annotations.SerializedName <fields>;
}
-keep,allowobfuscation @interface com.google.gson.annotations.**
 
  1. Если вы не хотите использовать аннотацию, то вам нужно исключить класс из запутывания
     -keepclassmembers class com.example.app.YourClass{
         public protected private *;
         #Keep default members amp; functions
         !public !protected !private *;
     }
     

Комментарии:

1. Я не понимаю, не могли бы вы, пожалуйста, написать это во 2-м методе, о котором идет речь, мой класс и packegename упоминаются, и моя ключевая переменная string array также запрашивается

2. -сохранить класс classmembers com.app.trasfer. Checkoutinfo{ общедоступный защищенный частный *; # Сохранить элементы и функции по умолчанию !общедоступный ! защищенный! private *; }