Android studio 混淆打包 proguard-rules.pro 与 bulid.gradle 配置总结
来源:互联网 发布:珠海网络电视台 编辑:程序博客网 时间:2024/05/19 04:02
现在写的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:sin2t@sina.com###################################################################################### #指定代码的压缩级别 -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 <methods>; } #保持自定义控件类不被混淆 -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } #保持自定义控件类不被混淆 -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } # 保持自定义控件类不被混淆 -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } # 保持自定义控件类不被混淆 -keepclasseswithmembers class * { public <init>(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 <fields>; !private <fields>; !private <methods>; 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 <fields>; } #避免混淆泛型 如果混淆报错建议关掉 #–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#######################################################################################
如有需要请复制使用 如发现遗漏请留言。
阅读全文
1 0
- Android studio 混淆打包 proguard-rules.pro 与 bulid.gradle 配置总结
- Android Studio中module配置好的bulid.gradle和混淆proguard-rules.pro
- android 混淆打包-最全proguard-rules.pro
- Android Proguard-rules.pro中常用的混淆配置
- 自定义Android混淆规则--proguard-rules.pro
- Android studio bulid.gradle 配置
- Android混淆proguard-rules.pro proguard-project.txt
- 代码混淆 proguard-rules.pro
- 一周总结(Android):Gradle和ProGuard混淆打包
- android 混淆文件的编写(proguard-rules.pro)
- Android Studio:ProGuard 混淆配置
- AndroidStudio proguard-rules.pro混淆 gson
- Android Studio 中 proguard-rules.pro 的模版
- proguard-android.txt proguard-rules.pro
- Android Studio Gradle配置,代码混淆,多渠道一键打包
- android打包混淆-proguard配置详解
- Android 混淆打包标准proguard 配置
- 使用Android Studio混淆打包(ProGuard基础语法和打包配置)
- 一个新的开始
- 从url下载xml文件并解析(在流的状态直接解析)
- 常用框架
- Hibernate学习笔记(六)Hibernate 映射继承
- window php 安装 redis 扩展
- Android studio 混淆打包 proguard-rules.pro 与 bulid.gradle 配置总结
- BIGWORLD服务端设计理念
- librtmp协议分析---RTMP_SendPacket函数
- Windows命令行查看文件的MD5
- Android之可旋转的轮盘菜单
- PowerDesigner 将Name中的字符COPY至为空的Comment中
- OpenJudge 2.5-2971 Catch That Cow(抓住那头牛)
- 批量微信检测开通软件 批量微信开通状态检测软件
- 纪念我的奇葩培训经历