Reputation: 805
After applying proguard to my code it's still pretty readable. Classes and packages are not renamed. Class variables, that is all that was renamed. Android Studio 2.2.3. build:gradle:2.2.3
build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 24
buildToolsVersion "25.0.1"
defaultConfig {
applicationId "com.mypackagename"
minSdkVersion 19
targetSdkVersion 24
versionCode 3
versionName "1.0"
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
dexInProcess = true
}
lintOptions {
abortOnError true
checkReleaseBuilds true
}
}
ext {
supportLibVersion = '25.0.1'
playServisesVersion = '10.0.0'
}
repositories {
maven { url "https://jitpack.io" }
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.github.PhilJay:MPAndroidChart:v2.2.5'
compile 'org.greenrobot:eventbus:3.0.0'
compile 'com.wdullaer:materialdatetimepicker:3.0.0'
compile 'com.aurelhubert:ahbottomnavigation:2.0.1'
compile "com.android.support:appcompat-v7:${supportLibVersion}"
compile "com.android.support:cardview-v7:${supportLibVersion}"
compile "com.android.support:design:${supportLibVersion}"
compile "com.google.android.gms:play-services-analytics:${playServisesVersion}"
compile "com.google.android.gms:play-services-drive:${playServisesVersion}"
compile "com.google.firebase:firebase-ads:${playServisesVersion}"
compile "com.google.firebase:firebase-core:${playServisesVersion}"
compile 'com.anjlab.android.iab.v3:library:1.0.34'
compile 'com.github.paolorotolo:appintro:4.1.0'
compile 'net.danlew:android.joda:2.9.5.1'
}
apply plugin: 'com.google.gms.google-services'
proguard-rules.pro
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in C:.....proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
-dontwarn com.github.mikephil.charting.**
-keep class android.support.v7.** { *; }
-keep class android.support.graphics.drawable.** { *; }
Upvotes: 3
Views: 1027
Reputation: 887
I can see that you are using the library AppIntro
. This library has an issue, where the proguard rules of the library are preserving all classes in the project. The proguard rules of the library are merged with the local ones and so in the final build all classes are preserved and will not be obfuscated.
This issue has been fixed in 4.2, but this version has not been released on Maven Central. Meanwhile, you have to clone the library locally and import it manually in gradle.
Steps:
Clone or Download
Button)libs
in the root of your projectAppIntro
in the libs
folderlibrary
-folder of the cloned project in the AppIntro
folder we created in step 3include ':libs:AppIntro'
to your settings.gradle
compile 'com.github.paolorotolo:appintro:4.1.0'
with compile project(':libs:AppIntro')
in your build.gradle
Now proguard should work normally!
Upvotes: 3