Android Studio中module配置好的bulid.gradle和混淆proguard-rules.pro
16lz
2021-01-23
build.gradle文件
apply plugin: 'com.android.application'android { compileSdkVersion 23 buildToolsVersion "23.0.1" defaultConfig { applicationId "corki.cn.ktvzp" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } //签名 改自己的路径 signingConfigs { debug { storeFile file("C:\\Users\\M\\.android\\debug.keystore") } relealse { //这样写就得把myandroid.jks文件放在项目目录 storeFile file("C:\\Users\\M\\Documents\\myandroid.jks") storePassword "你的密码" keyAlias "你的Asias" keyPassword "密码" } } buildTypes { debug { // 显示Log buildConfigField "boolean", "LOG_DEBUG", "true" versionNameSuffix "-debug" minifyEnabled false zipAlignEnabled false shrinkResources false } release { // 不显示Log buildConfigField "boolean", "LOG_DEBUG", "false" //混淆 minifyEnabled true //Zipalign优化 zipAlignEnabled true // 移除无用的resource文件 shrinkResources true // 混淆 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.3.0' compile 'com.android.support:design:23.3.0'}
proguard-rules.pro混淆文件
#指定代码的压缩级别 -optimizationpasses 5 #包明不混合大小写 -dontusemixedcaseclassnames #不去忽略非公共的库类 -dontskipnonpubliclibraryclasses #优化 不优化输入的类文件 -dontoptimize #预校验 -dontpreverify #混淆时是否记录日志 -verbose # 混淆时所采用的算法 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* #保护注解 -keepattributes *Annotation* #如果引用了v4或者v7包 -dontwarn android.support.** #保持 native 方法不被混淆 -keepclasseswithmembernames class * { native ; } #保持自定义控件类不被混淆 -keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet); } #保持自定义控件类不被混淆 -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } #保持 Parcelable 不被混淆 -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } #保持 Serializable 不被混淆 -keepnames class * implements java.io.Serializable #保持 Serializable 不被混淆并且enum 类也不被混淆 -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient ; !private ; !private ; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } #保持枚举 enum 类不被混淆 如果混淆报错,建议直接使用上面的 -keepclassmembers class * implements java.io.Serializable即可 #-keepclassmembers enum * { # public static **[] values(); # public static ** valueOf(java.lang.String); #} -keepclassmembers class * { public void *ButtonClicked(android.view.View); } #不混淆资源类 -keepclassmembers class **.R$* { public static ; } #避免混淆泛型 如果混淆报错建议关掉 #–keepattributes Signature
更多相关文章
- AndroidManifest.xml 系统找不到指定的文件
- Smail反汇编文件语句说明
- Android 复制单个文件到指定目录,Android copy file
- Android中的ClassLoader与dex文件加密实现分析
- Android中将资源文件转为Bitmap对象
- Android UI 之时间与日期控件
- Android 文件下载 downloadManager
- Android渐变色xml文件
- android 选中效果xml文件