Marshmallow 上的分析损坏了吗?

Analytics broken on Marshmallow?

我正在使用分析并在编译时收到此混淆警告:

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'

这是一个错误吗?有什么解决方法吗?

这可能是一个错误,请注意 Android Marshmallow 尚未发布,根据 Google+ 上的评论,当 "Android Developers" 对 post SDK,混淆器和其他东西有很多错误。等待更新版本的SDK出来。

添加到混淆器

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

似乎修复了

根据 API 22-23 差异更改,org.apache.http.* 包已从 Android 6.0 (Marshmallow) API 级别 23 开始删除。

http://developer.android.com/sdk/api_diff/23/changes.html

通过:http://android-developers.blogspot.co.uk/2015/08/m-developer-preview-3-final-sdk.html

我认为如果您将旧版 Http 支持添加到应用程序的 build.gradle 中(就在 android 部分内),那么在 GMS 和其他库移至非-删除了类

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

请参阅 this page 获取官方文档。

这是一个错误,我们需要在 运行 Proguard 时包括所有可选的依赖项(http 现在在 API 23 中是可选的),因为 Proguard 非常严格地查看所有需要的 类.

问题是,如果您的应用程序项目没有声明它需要 http,那么 Progard 将不会配置为将其作为库 jar 接收。

临时解决方法是让您的应用声明它需要它,但这也不是您真正想要的。 (见其他答案)

让 Proguard 不警告丢失 类 可能不是一个好主意,但也有可能(请参阅其他答案)

无论如何,我们会在最终的 1.4 中解决这个问题。它应该出现在下一个测试版 (beta2) 中,可能是下周(2015/09/07 的那一周)