I am having problems with gradle proguard... I have the following modules:
- App :main app module. Have dependency ModuleA and ModuleC
- ModuleA: library module. Have dependency ModuleB, and jar dependecies.
- ModuleB: Library module
- ModuleC: library module
- Wear: wear app module.
build.gradle files: - App:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':ModuleA')
compile project(':ModuleC')
wearApp project(':Wear')
}
ModuleA:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':ModuleB')
}
ModuleB:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
ModuleC: The same as ModuleB.
Wear:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
**I wrote only the important lines
My problem is that if I generate a signed APK with that configuration, when I install it on a device it crashes with this exception:
java.lang.NoSuchFieldError: no field with name='peer' signature='J' in class Lcom/package/ClassInJar;
It crashes in a class contained in a jar in the libs folder of module A.
If I set minifyEnabled to false in all modules it doesn't crash, but I prefer to obfuscate the code. And if I turn minifyEnabled to true in library modules it doesn't compile and it shows me this exception:
Error:Execution failed for task ':ModuleB:proguardRelease'.
java.io.IOException: The output jar is empty. Did you specify the proper '-keep' options?