Аналитика сломана на Зефир?

Я использую аналитику, и при компиляции я получаю предупреждения этого предупреждения:

Warning: com.google.android.gms.internal.zzw$zza: can't find superclass or interface org.apache.http.client.methods.HttpEntityEnclosingRequestBase
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.NameValuePair
Warning: com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.client.utils.URLEncodedUtils

и многое другое.

Я использую эти зависимости:

compile 'com.google.android.gms:play-services-base:7.8.0'
compile 'com.google.android.gms:play-services-gcm:7.8.0'

Это ошибка? Есть ли обходной путь для этого?

Ответ 1

Добавление в proguard

-keep public class com.google.android.gms.**
-dontwarn com.google.android.gms.**

кажется, исправляет

Ответ 2

Я думаю, что если вы добавите устаревшую поддержку Http в build.gradle вашего приложения (только внутри секции Android), тогда он должен решить проблему до тех пор, пока GMS и другие библиотеки не перейдут к незанятым классам

android {
    useLibrary 'org.apache.http.legacy' // Need until GMS upgraded
}

См. эту страницу для официальной документации.

Ответ 3

Это ошибка, мы должны включить все необязательные зависимости (http теперь является необязательным в API 23) при запуске Proguard, поскольку Proguard очень строг в отношении просмотра всех необходимых классов.

Проблема заключается в том, что если ваш проект приложения не объявляет, что ему нужен http, то Progard не будет настроен на его получение в качестве библиотеки jar.

Временное исправление будет заключаться в том, чтобы ваше приложение объявило, что оно ему нужно, но это не совсем то, что вы хотите. (см. другие ответы)

Предоставление Proguard не предупреждает о недостающих классах, вероятно, не очень хорошая идея, но это тоже возможно (см. другие ответы)

В любом случае, мы исправим это в финале 1.4. Он должен появиться в следующей бета-версии (beta2), на следующей неделе, вероятно (неделя 2015/09/07)

Ответ 4

Вероятно, это ошибка, отметим, что Android Marshmallow еще не выпущен, и, согласно комментариям к Google+, когда "Разработчики Android" сделали сообщение об SDK, есть много ошибок с proguard и другими вещами. Подождите, пока не появится более новая версия SDK.