10

私は分析を使用していますが、コンパイル中に次のプロガード警告が表示されます。

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

プロガードへの追加

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

修正するようです

于 2015-08-18T11:47:07.883 に答える
7

アプリのbuild.gradle(Androidセクションのすぐ内側)にレガシーHttpサポートを追加すると、GMSや他のライブラリが削除されていないクラスに移動するまで問題が解決するはずです

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

公式ドキュメントについては、このページを参照してください。

于 2015-08-20T10:20:49.577 に答える
6

これはバグです。Proguard は必要なすべてのクラスを表示することについて非常に厳密であるため、Proguard を実行するときにすべてのオプションの依存関係 (http は現在 API 23 ではオプションです) を含める必要があります。

問題は、アプリ プロジェクトで http が必要であると宣言されていない場合、Progard はそれをライブラリ jar として受け取るように構成されないことです。

一時的な修正は、アプリが必要であることをアプリに宣言させることですが、それも実際には望んでいることではありません。(他の回答を参照)

クラスの欠落についてProguardに警告させないようにすることはおそらく良い考えではありませんが、それも可能です(他の回答を参照)

いずれにせよ、最終版の 1.4 でこれを修正します。次のベータ版 (beta2) で表示されるはずです。おそらく来週 (2015/09/07 の週)

于 2015-09-03T19:18:56.547 に答える
0

API 22-23 diff の変更に従って、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

于 2015-08-18T13:44:45.930 に答える