Java – Proguard configuration modification retrofit
•
Android
My application works normally in debugging, but when creating APK for publishing, I received the following error
Process: neocom.dealerbook, PID: 9044
java.lang.indexoutofboundsexception: Invalid index 0, size is 0
at java.util.ArrayList.throwindexoutofboundsexception(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at neocom.dealerbook.controller.k.a(MapActivity.java:103)
at neocom.dealerbook.controller.k.success(MapActivity.java:98)
at retrofit.CallbackRunnable$1.run(CallbackRunnable.java:45)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
This is mapactivity. Java: 103
Callback<ClienteConfiguracao> callback = new Callback<ClienteConfiguracao>() {
int failCount = 0;
@Override
public void success(ClienteConfiguracao clienteConfiguracao, Response response) {
currentClient = clienteConfiguracao.getDealerships().get(0); /* Line 103 */
setupToggles(currentClient);
List<String> mAuthorization = clienteConfiguracao.getAuthorization();
toAllowPermissions = new HashMap<>();
Set<String> allImplementedKeys = PermissionManager.ALL_PERMISSIONS.keySet();
for (String key : mAuthorization) {
if (allImplementedKeys.contains(key)) {
List value = PermissionManager.ALL_PERMISSIONS.get(key);
toAllowPermissions.put(key, value);
}
}
This is the Proguard file I built to search for errors I got, retrofit website and others
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
-dontwarn retrofit.**
-dontwarn com.squareup.okhttp.**
-dontwarn okio.**
-dontwarn retrofit.appengine.UrlFetchClient
-keep class retrofit.** { *; }
-keep class com.squareup.okhttp.** { *; }
-keep interface com.squareup.okhttp.** { *; }
-keepattributes Signature
-keepattributes Exceptions
-keepattributes *Annotation*
-keepattributes SourceFile
-keepattributes LineNumberTable
-keepclasseswithmembers class * {
@retrofit.http.* <methods>;
}
Any hints about it?
resolvent:
When retrofitting with gson, it is important to add progard rules to serialized and deserialized classes
For example:
-keep class com.example.model.** { *; }
PS: another suggestion is to use rules snippets from this repository. Many different libraries have rules
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码