72

Android SDK マネージャーでいくつかの更新を行った後、署名付き apk を作成してこれを取得します。

ProGuard: [] Warning: com.google.android.gms.auth.GoogleAuthUtil: 
  can't find referenced class com.google.android.gms.R
ProGuard: [] Warning: com.google.android.gms.auth.GoogleAuthUtil: 
  can't find referenced class com.google.android.gms.R$string
...
etc.

設定されていれば-dontwarn com.google.android.gms.**コンパイルはOKです。しかし、実行後、次のような多くのエラー レポートが表示されます (多くのデバイスから):

Caused by: android.view.InflateException: Binary XML file line #32: 
  Error inflating class com.google.android.gms.common.SignInButton

私のデバイスではすべて問題ありません。更新前は ProGuard の警告は表示されず、すべて正常に動作していました。どのように修正しますか?

4

4 に答える 4

141

これをファイルに追加してproguard-project.txtも、すべてのクラスが保持されます。

-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**

私はこれを好みます。これにより、apk ファイルのサイズがはるかに小さくなります。

-keep public class com.google.android.gms.* { public *; }
-dontwarn com.google.android.gms.**

また、最新の Google Play Proguard 通知については、http://developer.android.com/google/play-services/setup.html#Proguard を参照してください

-keep class * extends java.util.ListResourceBundle {
    protected Object[][] getContents();
}

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    public static final *** NULL;
}

-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}

-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}
于 2014-06-08T18:47:48.310 に答える
2

同様の問題に遭遇し、最終的に Google Play Services モジュールを更新したことを発見しましたが、Android Studio のメイン モジュールにモジュールを再追加していませんでした。それを追加すると、問題が解決しました。

于 2013-11-07T05:19:14.540 に答える