Proguard c retrofit
Делаю обфускацию своего кода нашел интересное решение добавление keep правила
-keepattributes !*Annotation*
Это убирает метоинформацию, и делает код, как по мне, менее читабельным но заметил что удаляются аннотации с retrofit interface и выглядит так
public interface SiApi {
Object b(String var1, Continuation<? super FirstAction> var2);
Object e(String var1, Continuation<? super FirstAction> var2);
Object c(String var1, Continuation<? super FirstAction> var2);
Object a(String var1, Continuation<? super FirstAction> var2);
Object d(String var1, Continuation<? super FirstAction> var2);
Object a(RequestBody var1, RequestBody var2, Part var3, Continuation<? super Unit> var4);
Object a(int var1, Continuation<? super NextAction> var2);
}
а хотелось бы такой вид
public interface SiApi {
@GET("***")
Object b(String var1, Continuation<? super FirstAction> var2);
@GET("***")
Object e(String var1, Continuation<? super FirstAction> var2);
@GET("***")
Object c(String var1, Continuation<? super FirstAction> var2);
@GET("***")
Object a(String var1, Continuation<? super FirstAction> var2);
@GET("***")
Object d(String var1, Continuation<? super FirstAction> var2);
@Multipart
@POST("***")
Object a(RequestBody var1, RequestBody var2, Part var3, Continuation<? super Unit> var4);
@GET("***")
Object a(int var1, Continuation<? super NextAction> var2);
}
Как сохранить аннотации для отдельных классов?
Ответы (1 шт):
Автор решения: Danil Apsadikov
→ Ссылка
Proguard удаляет аннотации и меняет название переменных из-за этого Retrofit не понимает как правильно создать объект.
Добавь правило для Proguard, чтобы он не трогал классы
-keep class package.to.yourmodels.** { *; }