Proguard 混淆 google 的 类 并忽略 -keep
Proguard obfuscates google's classes and ignore -keep
在我的项目中,我不希望混淆器混淆我的日志class,所以我使用
-keep class org.core.sandfall.game.utils.Log {
public static void e(java.lang.String);
}
而且有效。
我也不希望混淆器混淆 google 的排行榜,特别是方法 submitScore(对于我自己的项目)。
无论我使用什么 -keep,它都会混淆它!
-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
导致 proguard 崩溃(-verbose
没有说明原因),
-outjars ../Sandfall/lib/google-play-services.jar
或
-libraryjars ../Sandfall/lib/google-play-services.jar
不起作用,尽管 proguard 运行。
编辑 (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);
}
没有。
最后,我只写了
-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);
}
成功了!
在我的项目中,我不希望混淆器混淆我的日志class,所以我使用
-keep class org.core.sandfall.game.utils.Log {
public static void e(java.lang.String);
}
而且有效。
我也不希望混淆器混淆 google 的排行榜,特别是方法 submitScore(对于我自己的项目)。
无论我使用什么 -keep,它都会混淆它!
-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
导致 proguard 崩溃(-verbose
没有说明原因),
-outjars ../Sandfall/lib/google-play-services.jar
或
-libraryjars ../Sandfall/lib/google-play-services.jar
不起作用,尽管 proguard 运行。
编辑 (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);
}
没有。
最后,我只写了
-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);
}
成功了!