001 |
# ------------------------------------- |
003 |
# ------------------------------------- |
005 |
# ---------------------------------- |
007 |
# -optimizationpasses n |
008 |
# ---------------------------------- |
009 |
-optimizationpasses 5 |
011 |
# ---------------------------------- |
013 |
# -dontusemixedcaseclassnames |
014 |
# ---------------------------------- |
015 |
#-dontusemixedcaseclassnames |
016 |
# ---------------------------------- |
018 |
# -dontskipnonpubliclibraryclasses |
019 |
# ---------------------------------- |
020 |
#-dontskipnonpubliclibraryclasses |
022 |
# ---------------------------------- |
025 |
# ---------------------------------- |
028 |
# ---------------------------------- |
031 |
# ---------------------------------- |
034 |
# ---------------------------------- |
036 |
# optimizations {optimization_filter} |
037 |
# ---------------------------------- |
038 |
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* |
040 |
-keep public class * extends android.app.Activity |
041 |
-keep public class * extends android.app.Application |
042 |
-keep public class * extends android.app.Service |
043 |
-keep public class * extends android.content.BroadcastReceiver |
044 |
-keep public class * extends android.content.ContentProvider |
045 |
-keep public class * extends android.app.backup.BackupAgentHelper |
046 |
-keep public class * extends android.preference.Preference |
047 |
-keep public class com.android.vending.licensing.ILicensingService |
049 |
-keepclasseswithmembernames class * { |
055 |
-keep public class * extends android.view.View { |
056 |
public < init >(android.content.Context);
|
057 |
public < init >(android.content.Context, android.util.AttributeSet);
|
058 |
public < init >(android.content.Context, android.util.AttributeSet, int);
|
059 |
public void set*(...);
|
062 |
-keepclassmembers enum * { |
063 |
public static **[] values();
|
064 |
public static ** valueOf(java.lang.String);
|
067 |
-keep class * implements android.os.Parcelable { |
068 |
public static final android.os.Parcelable$Creator *;
|
071 |
#-------------------------- |
072 |
# 保护类型 -keepattributes 说明 |
073 |
# Exceptions, Signature, Deprecated, SourceFile, SourceDir, LineNumberTable, LocalVariableTable, |
074 |
# LocalVariableTypeTable, Synthetic, EnclosingMethod, RuntimeVisibleAnnotations, RuntimeInvisibleAnnotations, |
075 |
# RuntimeVisibleParameterAnnotations, RuntimeInvisibleParameterAnnotations, and AnnotationDefault |
076 |
# -------------------- |
078 |
-libraryjars < java.home >/lib/rt.jar
|
080 |
# ---------------------- |
083 |
# ---------------------- |
086 |
# ---------------------- |
089 |
# ----------------------- |
092 |
# ----------------------- |
095 |
# ----------------------- |
097 |
# ----- 混淆包路径 ------- |
099 |
-flattenpackagehierarchy '' |
102 |
# -------- 以下是使用了 roboguice-1.1.2.jar 以及 guice-2.0-no_app.jar 功能需要保护的字段及类相关 -------- |
103 |
-keep class com.google.inject.Binder |
104 |
-keepclassmembers class * { |
105 |
@com.google.inject.Inject < init >(...);
|
107 |
-keepclassmembers class * { |
110 |
-keepclassmembers class **.R$* { |
111 |
public static < fields >;
|
114 |
# ------ 编译时需要用到的 jar 包 |
115 |
-libraryjars D:/dev_rc/android-sdk-windows/add-ons/addon_google_apis_google_inc_11/libs/maps.jar |
117 |
# ------ 保护 谷歌第三方 jar 包,界面特效 ---------- |
118 |
-keep class android.support.v4.** |
119 |
-dontwarn android.support.v4.** |
121 |
# ------ 保护百度地址jar包 -------- |
122 |
-keep class com.baidu.mapapi.** { *; } |
123 |
-dontwarn com.baidu.mapapi.** |
126 |
-dontwarn com.classpackage.AA |
128 |
#-keepnames class * implements java.io.Serializable |
129 |
# ---------保护所有实体中的字段名称---------- |
130 |
-keepclassmembers class * implements java.io.Serializable { |
134 |
# --------- 保护类中的所有方法名 ------------ |
135 |
-keepclassmembers class * { |
总结:
无非就是要保护一些反射实现的逻辑,还有如果调用到外部接口(如hessian实现的)时方法名需要保护。
转自:http://my.oschina.net/zhangzhihao/blog/72393
分享到:
相关推荐
Android反编译文件proguard.cfg,将此文件复制到项目中然后在project.properties文件中添加proguard.config=proguard.cfg即可实现代码混编。此方法很好的防止了APK被反编译。
解决android中混淆代码签名导出报错的proguard.cfg 第三方jar包,可类似 -libraryjars libs/android-support-v4.jar 添加在文件中
在 \安卓模拟器文件夹内\tools\lib\将proguard.cfg 放至内即可
安卓打包混淆的proguard,其中本文档保存的是基础部分,其他混淆规则需要自己添加
自定义proguard.jar
修改Proguard混淆规则,自定义字符集,使用详情https://blog.csdn.net/u011106915/article/details/84636592
一个混淆器的汉货版,proguard.v3.8汉化版
java 源码加密 混淆,proguard 配置文件,很详细,经测试可以用
替换sdk tools下的proguard.jar或者android studio安装目录下的proguard
把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可。只是把java代码混淆了,xml和资源文件、图片并没有混淆,有些应用反编译后java代码用jd-ui根本都无法打开 Android-apk的反编译步骤: 注意...
基于springboot搭建一个简单案例,利用proguard插件实现代码混淆,增加源代码的阅读和理解的难度, 并不能百分百保证代码...预检(Preveirfy):在 Java 平台上对处理后的代码进行预检,确保加载的 class 文件是可执行的
Java Jar包混淆器proguard.v3.8 双击proguardgui.jar运行
proguard 支持jdk8
proguard混淆jar包提示错误:Unknown verification type [*] in stack map frame 解决方案:找到proguard源码中proguard\src\proguard\classfile\ClassConstants.java类,然后...资源已经处理(源码+proguard.jar包)。
proguard可以用两种方式实现加密打包。 1、使用proguard工具,工具文件夹下的proguard6.0.3.zip 参照:https://blog.csdn.net/xsj362233248/article/details/46417525 2、嵌入项目的插件形式,插件文件夹下的...