ProGuard configuration for Guava with obfuscation and optimization

前端 未结 10 1438
臣服心动
臣服心动 2020-12-07 12:04

Looking for a ProGuard configuration for Guava that will obfuscate and optimize, as the default one that is provided on the website does not.

Not only that I cannot

10条回答
  •  抹茶落季
    2020-12-07 12:53

    As of Guava 17.0, this is what I needed in ProGuard config:

    -dontwarn javax.annotation.**
    -dontwarn javax.inject.**
    -dontwarn sun.misc.Unsafe
    

    Otherwise build fails with warnings like:

    Warning: com.google.common.base.Absent: 
       can't find referenced class javax.annotation.Nullable
    

    (That's because Guava uses annotations that are not part of Android runtime (android.jar). In this case it's fine to just mute the warnings.)

    If you are using Gradle as the build tool, the above proguard-project.txt and the following in build.gradle produces an optimised and obfuscated APK while using Guava.

    buildTypes {
        release {
            minifyEnabled true
            proguardFile file('proguard-project.txt')
            proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
        }
    }
    

    Alternatively you can include dependecy to jsr305.jar in build.gradle dependencies:

    compile 'com.google.code.findbugs:jsr305:2.0.2'
    

    ...with only -dontwarn sun.misc.Unsafe in ProGuard config, but I preferred using -dontwarn also for the javax stuff.

提交回复
热议问题