10

我正在使用分析,在编译时我收到了这个 proguard 警告:

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'

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

4

5 回答 5

12

添加到proguard

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

似乎修复

于 2015-08-18T11:47:07.883 回答
7

我认为,如果您将旧版 Http 支持添加到应用程序的 build.gradle(就在 android 部分内),那么它应该可以解决问题,直到 GMS 和其他库移至未删除的类

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

有关官方文档,请参阅此页面

于 2015-08-20T10:20:49.577 回答
6

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

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

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

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

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

于 2015-09-03T19:18:56.547 回答
1

这可能是一个错误,请注意Android Marshmallow 尚未发布,根据“Android 开发者”发布有关SDK 的帖子时Google+ 上的评论,proguard 和其他东西有很多错误。等到更新版本的 SDK 出来。

于 2015-08-18T09:32:26.860 回答
0

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

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

于 2015-08-18T13:44:45.930 回答