Proguard谷歌播放服务罐

时间:2014-09-25 10:45:20

标签: java android jar proguard

我试图用proguard混淆google play服务jar。 我尝试了两个版本的proguard配置文件。

  1. 第一个包含

    -keep class ** {
        public protected *;
    }
    
  2. 罐子没有混淆。它看起来还不错。

    1. 第二个包含

      -keep class com.** {
          public protected *;
      }
      
    2. 而且proguard删除了永恒。我收到一个错误:

          Error: The output jar is empty. Did you specify the proper '-keep' options?
      

      为什么它是空的,因为主要的google play服务包是com.google.android.gms?

1 个答案:

答案 0 :(得分:3)

以下ProGuard配置缩小了Google Play服务jar,无需优化或混淆,只保留与广告相关的API:

-injars  android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
-outjars google-play-services-ads.jar

-libraryjars android-sdk/extras/android/support/v4/android-support-v4.jar
-libraryjars android-sdk/platforms/android-20/android.jar

-verbose
-forceprocessing
-dontoptimize
-dontobfuscate
-dontwarn com.google.**.R
-dontwarn com.google.**.R$*
-dontnote

-keep public class com.google.ads.** {
    public protected *;
}

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

-keep class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
    java.lang.String NULL;
}

它将原始jar从2819类减少到409类(2.7M到476K)。我还没有测试过结果。如果通过反射访问任何已删除的类,则它们也需要保留在配置中。

相关问题