Android studio 混淆打包 proguard-rules.pro 与 bulid.gradle 配置总结
16lz
2021-01-23
现在写的app 基本都是经过混淆了的,如果不混淆, 发布出去,别人一反编译 就可以直接看你的源码了
ok 来说一下混淆吧:
build.gradle文件
apply plugin: 'com.android.application'android { //签名文件 改为自己的路径 signingConfigs { config { keyAlias 'xiao' keyPassword 'key' storeFile file('F:/Android/keystore.jks') storePassword 'key'// v2SigningEnabled false //是否采用APK Signature Scheme v2 } } compileSdkVersion 25 buildToolsVersion '25.0.3' //useLibrary 'org.apache.http.legacy' defaultConfig { applicationId "com.web" minSdkVersion 16 targetSdkVersion 25 versionCode 12 versionName "1.0.0" jackOptions { enabled true } signingConfig signingConfigs.config } buildTypes { release { signingConfig signingConfigs.config // 是否进行混淆 minifyEnabled false // 混淆文件的位置 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // 不显示Log buildConfigField "boolean", "LOG_DEBUG", "false" //Zipalign优化 zipAlignEnabled true // 移除无用的resource文件 shrinkResources true } debug { signingConfig signingConfigs.config // 显示Log buildConfigField "boolean", "LOG_DEBUG", "true" versionNameSuffix "-debug" minifyEnabled false zipAlignEnabled false shrinkResources false } } compileOptions { targetCompatibility 1.8 sourceCompatibility 1.8 } productFlavors { }}dependencies { // 编译libs目录下的所有jar包 compile fileTree(include: ['*.jar'], dir: 'libs') //noinspection GradleCompatible compile 'com.android.support:support-v4:25.3.1' compile 'com.android.support:design:25.3.1' compile 'com.github.bumptech.glide:glide:3.7.0'}
proguard-rules.pro混淆文件
###################################################################################### start on 2017/5/16 15:59# update author: qihao on 2017/7/4 17:53 http://blog.csdn.net/gfg156196# Email:[email protected]###################################################################################### #指定代码的压缩级别 -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); } # 保持自定义控件类不被混淆 -keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet); } # 保持自定义控件类不被混淆 -keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet, int); } #保持 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 #关闭所有日志 log, java.io.Print, printStackTrace -assumenosideeffects class android.util.Log { public static *** e(...); public static *** w(...); public static *** i(...); public static *** d(...); public static *** v(...); } -assumenosideeffects class java.io.PrintStream { public *** print(...); public *** println(...); } -assumenosideeffects class java.lang.Throwable { public *** printStackTrace(...); }###################################################################################### end 2017/7/4 17:53 http://blog.csdn.net/gfg156196#######################################################################################
如有需要请复制使用 如发现遗漏请留言。
熬夜写教程不容易,
如果你欣赏我的代码,
可以赞赏我几块钱买个新键盘。
更多相关文章
- android中如何显示图片的一部分
- android Uri利用及解析(文件操作)以及与路径的相互转换
- android > layout > background 背景图片重复
- Android 控件布局实现卡片效果,阴影效果
- Android文件管理器与media数据库的同步问题
- 【Android Developers Training】 42. 从另一台设备接收文件
- 如何在EditText中设置固定图片——Android移动开发
- 使用eclipse与android studio 在开发自定义控件时的区别