混淆Proguard文件

xiaoxiao2021-02-28  90

1,Proguard基本介绍 压缩和优化使得编译后apk包更小混淆可以保证代码在被反编译后很难读懂,防止逆向工程 2,ProGuard生成文件 mapping.txt —> 表示混淆前后代码的对照表,这个文件非常重要。如果你的代码混淆后会产生bug的话,log提示中是混淆后的代码,希望定位到源代码的话就可以根据mapping.txt反推。每次发布都要保留它方便该版本出现问题时调出日志进行排查,它可以根据版本号或是发布时间命名来保存或是放进代码版本控制中dump.txt —> 描述apk内所有class文件的内部结构seeds.txt —> 列出了没有被混淆的类和成员usage.txt —> 列出了源代码中被删除在apk中不存在的代码 3,常用去混淆内容 反射用到的类AndroidManifest中配置的类(ActivityService等的子类及Framework类默认不进行混淆)Jni中调用的类用到的第三方的jar表示保留本地的bean文件下的实体类特别处理js与本地原生组件之间的调用过程自定义不混淆的类 4,常用去混淆文件 # Add project specific ProGuard rules here.# By default, the flags in this file are appended to flags specified# in D:\study_adt_studio\sdk/tools/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 *;#}######################################### 以下是固定的 ##################################################################################### 压缩 #############################################指定代码的压缩级别-optimizationpasses 5######################################### 优化 ############################################ #不优化输入的类文件-dontoptimize######################################### 混淆配置 #############################################包名不混合大小写;混淆时,不会产生形形色色的类名-dontusemixedcaseclassnames#指定 不去忽略非公共的库类;是否混淆第三方jar-dontskipnonpubliclibraryclasses#混淆时,不做预校验-dontpreverify#混淆时是否记录日志-verbose# 混淆时所采用的算法-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*#保护给定的可选属性,例如LineNumberTable, LocalVariableTable, SourceFile, Deprecated, Synthetic, Signature, InnerClass-keepattributes Signature-keepattributes *Annotation*#忽略警告,避免打包时某些警告出现#-ignorewarning##记录生成的日志数据,gradle build时在本项目根目录输出###apk 包内所有 class 的内部结构-dump class_files.txt#未混淆的类和成员-printseeds seeds.txt#列出从 apk 中删除的代码-printusage unused.txt#混淆前后的映射-printmapping mapping.txt########记录生成的日志数据,gradle build时 在本项目根目录输出-end#######忽略警告-dontwarn com.lippi.recorder.utils**#如果引用了v4或者v7包-dontwarn android.support.**######################################### 保持哪些类不被混淆 #############################################不混淆某个类 的子类-keep public class * extends android.app.Application-keep public class * extends android.app.Activity-keep public class * extends android.support.v4.app.Fragment-keep public class * extends android.app.Fragment-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.preference.Preference-keep public class * extends android.support.v4.**-keep public class * extends android.support.annotation.**-keep public class * extends android.support.v7.**######################################### 保持哪些类不被混淆 #############################################Gson-keep class sun.misc.Unsafe { *; }-keep class com.google.gson.stream.** { *; }# Application classes that will be serialized/deserialized over Gson 下面替换成自己的实体类-keep class com.hokol.medium.http.bean.** { *; }#OkHttp3-dontwarn com.squareup.okhttp3.**-keep class com.squareup.okhttp3.** { *;}-dontwarn okio.**#Glide-keep public class * implements com.bumptech.glide.module.GlideModule-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *;}#保持 native 方法不被混淆# -keepclasseswithmembernames class * {# native <methods>;# }#保持自定义控件类不被混淆#-keepclasseswithmembers class * {# public <init>(android.content.Context, android.util.AttributeSet);#}# 保持自定义控件类不被混淆#-keepclasseswithmembers class * {# public <init>(android.content.Context, android.util.AttributeSet, int);#}#保持类成员#-keepclassmembers class * extends android.app.Activity {# public void *(android.view.View);#}#保持枚举 enum 类不被混淆 如果混淆报错,建议直接使用上面的 -keepclassmembers class * implements java.io.Serializable即可#-keepclassmembers enum * {# public static **[] values();# public static ** valueOf(java.lang.String);#}#保持 Parcelable 不被混淆#-keep class * implements android.os.Parcelable {# public static final android.os.Parcelable$Creator *;#}#保持 Serializable 不被混淆#-keepnames class * implements java.io.Serializable#保留一个完整的包#-keep class com.lippi.recorder.utils.** {# *;#}#如果不想混淆 keep 掉#-keep class MyClass;######################################### 第三方库 #############################################gson#-keepattributes *Annotation* 上面已经有了#-keep class com.google.gson.** {# *;#}#-keep class com.google.gson.examples.android.model.** { *; }#-keep class com.hokol.medium.http.** {# *;#}#-keep class com.yline.** {# *;#}#-keep class com.** {# *;#}#-keep class jp.** {# *;#}#-keep class android.support.** {# *;#}#-keep class okio.** {# *;#}#-keep class okhttp3.** {# *;#}#####混淆保护自己项目的部分代码以及引用的第三方jar包library########-libraryjars libs/umeng-analytics-v5.2.4.jar#三星应用市场需要添加:sdk-v1.0.0.jar,look-v1.0.1.jar#-libraryjars libs/sdk-v1.0.0.jar#-libraryjars libs/look-v1.0.1.jar#-keepnames class com.hokol.config.glide.HokolGlideModule#-keep public class * implements com.bumptech.glide.module.GlideModule 5,日志反混淆(自己尝试没啥用) 路径:D:\study_adt_studio\sdk\tools\proguard\bin\proguardgui.bat  
转载请注明原文地址: https://www.6miu.com/read-72958.html

最新回复(0)