Intereting Posts
Ffmpeg 10.04 Не удалось найти параметры кодека Android – добавление хотя бы одного действия с фильтром намерений ACTION-VIEW после обновления версии SDK версии 23 Использование Picasso с кэшем пользовательского диска Горизонтальный LinearLayout с несколькими детьми, перемещение детей ниже на новой линии, когда больше нет горизонтального пространства (Новое) сообщение GCM, но как разобрать? Сохранение вложенных посторонних объектов с помощью ORMLite на Android Android dex дает исключение BufferOverflowException при создании Есть ли репо, где вы можете скачать виртуальные устройства Android? Внутренняя ошибка при запуске приложения Не удалось настроить Android с Ubuntu 11.10 Как сохранить объект в базе данных sqlite? Android: данные, передаваемые по радио и Wi-Fi Как играть в gif в android из url? Android: как получить список установленных действий, как они появляются в пусковой установке, без дубликатов Android Studio – проблема с Android SDK на Windows 7

ProGuard не работает с okhttp

ProGuard не будет хорошо играть с okhttp, и я продолжаю получать следующие предупреждения:

Warning:com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl: can't find referenced method 'long getContentLengthLong()' in program class com.squareup.okhttp.internal.huc.HttpURLConnectionImpl Warning:com.squareup.okhttp.internal.huc.HttpsURLConnectionImpl: can't find referenced method 'long getHeaderFieldLong(java.lang.String,long)' in program class com.squareup.okhttp.internal.huc.HttpURLConnectionImpl Warning:com.squareup.okhttp.internal.huc.JavaApiConverter$CacheHttpsURLConnection: can't find referenced method 'long getContentLengthLong()' in program class com.squareup.okhttp.internal.huc.JavaApiConverter$CacheHttpURLConnection Warning:com.squareup.okhttp.internal.huc.JavaApiConverter$CacheHttpsURLConnection: can't find referenced method 'long getHeaderFieldLong(java.lang.String,long)' in program class com.squareup.okhttp.internal.huc.JavaApiConverter$CacheHttpURLConnection Warning:there were 4 unresolved references to program class members. Your input classes appear to be inconsistent. You may need to recompile the code. (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember) 

Это мои настройки proguard для okhttp и модификации:

 -dontwarn rx.** -dontwarn okio.** -dontwarn com.squareup.okhttp.* -dontwarn retrofit.appengine.UrlFetchClient -keep class retrofit.** { *; } -keepclasseswithmembers class * { @retrofit.http.* <methods>; } -keepattributes Signature -keepattributes *Annotation* 

Может ли это иметь какое-то отношение к изменениям в ProGuard в Android Studio 1.0?

Я попробовал ответы на связанные вопросы, но они только предложили использовать настройки, которые у меня уже есть.

Solutions Collecting From Web of "ProGuard не работает с okhttp"

Это работает для меня:

Вы должны добавить в свою proguard-rules.pro две строки:

 -keep class com.squareup.okhttp.** { *; } -keep interface com.squareup.okhttp.** { *; } 

Полный файл proguard-rules.pro будет выглядеть так:

 -dontwarn rx.** -dontwarn okio.** -dontwarn com.squareup.okhttp.** -keep class com.squareup.okhttp.** { *; } -keep interface com.squareup.okhttp.** { *; } -dontwarn retrofit.** -dontwarn retrofit.appengine.UrlFetchClient -keep class retrofit.** { *; } -keepclasseswithmembers class * { @retrofit.http.* <methods>; } -keepattributes Signature -keepattributes *Annotation* 

Источник: https://stackoverflow.com/a/24178851/4102045

Я, наконец, смог решить эту проблему.

Предупреждения, с которыми я столкнулся, были фактически бессмысленными и могут быть проигнорированы.

Вместо этого я забыл не обфускать мои модельные классы:

 -keep class com.example.datamodel.** { *; } 

После этого все хорошо сработало.

Он работает для меня с этими конфигами. Используйте ** вместо * для всех подклассов с инкапсулированными дочерними пакетами

 -dontwarn org.xmlpull.v1.** -dontwarn com.squareup.** -keep class com.squareup.** { *; } 

Добавьте это в настройки proguard:

 -dontwarn com.squareup.okhttp.internal.huc.** 

Я думаю, что можно с уверенностью предположить, что вы не используете ни один из классов в com.squareup.okhttp.internal так как с этого момента происходят ваши предупреждения.

OkHttp

-keepattributes Подпись

-keepattributes Аннотации

-keep class okhttp3. ** {*; }

-keep интерфейс okhttp3. ** {*; }

-dontwarn okhttp3. **