Proguard对google的类进行了模糊处理并忽略了-keep

时间:2015-08-29 08:32:20

标签: java android proguard

在我的项目中,我不希望proguard混淆我的Log类,所以我使用

-keep class org.core.sandfall.game.utils.Log { public static void e(java.lang.String); }

它有效。

我也不希望proguard混淆谷歌的排行榜,特别是方法submitScore(我自己的项目)。

无论我使用什么,它都会混淆它!

-keep public class com.google.android.gms.** {*;}
-keep class com.google.android.gms.** {*;}
-keepclassmembers class com.google.android.gms.** {*;}
-keepclasseswithmembers class com.google.android.gms.** {*;}
-keepnames class com.google.android.gms.** {*;}
-keepattributes Exceptions,InnerClasses
-keep class com.google.android.gms.games.internal.api.LeaderboardsImpl$* {
    *;
}
-keep public class com.google.android.gms.games.internal.api.LeaderboardsImpl {
    *** *submitScore(...);
}
-keep class com.google.android.gms.games.internal.api.LeaderboardsImpl {
    *** *submitScore(...);
}
-keep class com.google.android.gms.games.internal.api.*$* {
    *;
}

我试着单独使用它们或者一起使用它们,没有运气。 我做错了什么(我在哪里输入错误)?

修改:

-injars ../Sandfall/lib/google-play-services.jar可能导致崩溃(-verbose没有说明原因),

-outjars ../Sandfall/lib/google-play-services.jar

-libraryjars ../Sandfall/lib/google-play-services.jar虽然没有运行,但不起作用。

编辑(2):出于某种奇怪的原因,

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

保持SafeParcelable,但

-keep class com.google.android.gms.games.internal.api.LeaderboardsImpl { public void submitScore(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, java.lang.Long); }没有。

1 个答案:

答案 0 :(得分:0)

finnaly,我所做的只是写

-keep class com.google.android.gms.games.**{*;}
-keep class com.google.android.gms.games.internal.api.LeaderboardsImpl {
    public void submitScore(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, java.lang.Long);
}

那就有用了!