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
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.