Android Studio混淆的簡單使用
簡單的build.gradle設置
buildTypes {
? ? ? ? release {
? ? ? ? ? ? //混淆
? ? ? ? ? ? minifyEnabled true
? ? ? ? ? ? //Zipalign優(yōu)化
? ? ? ? ? ? zipAlignEnabled true
? ? ? ? ? ? // 移除無用的resource文件
? ? ? ? ? ? shrinkResources true
? ? ? ? ? ? //加載默認混淆配置文件 progudard-android.txt在sdk目錄里面,proguard-rules.pro是我們自己配的混淆文件
? ? ? ? ? ? proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
? ? ? ? ? ? //簽名
? ? ? ? ? ? signingConfig signingConfigs.relealse
? ? ? ? }
}
proguard-rules.pro里面的一般性設置:
-dontwarn?
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclasseswithmembernames class * {
??? native
-keepclasseswithmembers class * {
??? public
-keepclasseswithmembers class * {
??? public
-keepclassmembers class * extends android.app.Activity {
?? public void *(android.view.View);
}
-keepclassmembers enum * {
??? public static **[] values();
??? public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
? public static final android.os.Parcelable$Creator *;
}
需要注意的是一般打包報錯提示warning,不能添加 -ignorewarnings ?。用這個的確可以解決問題,也許還會解決其他一些問題,但是官方不推薦使用它官方文檔說: Ignoring warnings can be dangerous
一般使用keep和dontwarm來解決
另外避免使用-libraryjars,用這個來混淆jar會報錯