Залп всегда выдает ошибку после использования ProGuard - PullRequest
0 голосов
/ 18 марта 2019

Я использую Volley и Gson в моем проекте.Проект является проектом Lib.Когда я использую свой Lib в демонстрационном проекте, Volley всегда выдает ответ об ошибке с сообщением: «org.json.JSONException: Конец ввода с символом 0» и никогда не имеет успешного ответа.Я предполагаю, что это вызвано ProGuard.Странно то, что когда я устанавливаю "minifyEnabled" в Lib или в демонстрационном проекте, все работает хорошо.Но когда я устанавливаю "minifyEnabled" в Lib и Demo, залп всегда будет неудачным.Кто-нибудь сейчас почему это происходит?

Извините за пропущенный контент ...

это бросок залпа ошибки:

org.json.JSONException: End of input at character 0

и это мой ProGuard для залпаи Gson:

## ----------------------------------
##     Gson
## ----------------------------------
-keepattributes Signature
-keepattributes *Annotation*
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.** { *; }
-keep class com.google.gson.stream.** { *; }


## ----------------------------------
##     Glide
## ----------------------------------
-keep class com.bumptech.glide.** {*;}

## -------------------------------------------
##     volley
## -------------------------------------------
-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.NetworkDispatcher {
    void processRequest();
}
-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.CacheDispatcher {
    void processRequest();
}
-keep class com.android.volley.** {*;}
-keep class com.android.volley.toolbox.Volley
-keepclassmembers class com.android.volley.toolbox.Volley { *; }
-keep class com.android.volley.toolbox.** {*;}
-keep class com.android.volley.Response$* { *; }
-keep class com.android.volley.Request$* { *; }
-keep class com.android.volley.RequestQueue$* { *; }
-keep class com.android.volley.toolbox.HurlStack$* { *; }
-keep class com.android.volley.toolbox.ImageLoader$* { *; }
-keep class org.apache.http.** {*;}

Важно то, что эта ошибка произошла только в том случае, если и Lib, и Demo были одновременно запутаны.Запутывание с помощью Lib или Demo не привело бы к этой проблеме.

Кто-нибудь поможет?Я на 100% уверен, что храню все свои классы моделей в файле ProGuard.

2019-03-18 14:38:15.635 11276-11276 W/System.err: com.a.a.m: org.json.JSONException: End of input at character 0 of 
2019-03-18 14:38:15.635 11276-11276 W/System.err:     at com.a.a.a.k.a(Unknown Source:32)

While the com.a.a.a.k is "com.android.volley.toolbox.JsonObjectRequest"

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Добавьте следующие строки в ваш proguard-rules.pro, который вы можете найти в Gradle Script

-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.NetworkDispatcher {
    void processRequest();
}
-keepclassmembers,allowshrinking,allowobfuscation class com.android.volley.CacheDispatcher {
    void processRequest();
}

Вы также можете сослаться на эту ссылку

Обновление

Затем вы должны добавить эти правила в ваш proguard-rules.pro вашего библиотечного проекта. Если вы видите, что в iamge рядом с proguard-rules.pro написано, что этот файл предназначен для модуля приложения, там должно быть еще одно proguard-rules.pro для правила добавления вашего библиотечного модуля. enter image description here

0 голосов
/ 18 марта 2019

вставьте эти правила в proguard,

-keep class com.android.volley.** { *; }
-keep class org.apache.commons.logging.**

-keepattributes *Annotation*

-dontwarn org.apache.**
...