混淆打包
来源:互联网 发布:淘宝联盟怎么赚取佣金 编辑:程序博客网 时间:2024/06/04 23:32
ProGuard的四个功能:
1.压缩;
2.优化;
3.混淆;
4.预检;
详细注释的模本提供如下:
# 一、基本指令 start------------------------------------------------------------## 1.代码混淆压缩比,在0-7之间,默认为5,一般不需要改-optimizationpasses 5# 2.混淆时候不使用大小写混合,混淆后的类名为小写-dontusemixedcaseclassnames# 3.指定不去忽略非公共的类-dontskipnonpubliclibraryclasses# 4.指定不去忽略非公共的库的类的成员-dontskipnonpubliclibraryclassmembers# 5.不做预校验,preverify 是 proguard的4个步骤之一# Android 不需要 preverify, 去掉这一步可加快混淆速度-dontpreverify# 6.有了 verbose 这句话,混淆后就会生成映射文件# 包含有类名 -> 混淆后类名的映射关系# 然后使用printmapping 指定映射文件的名称-verbose-printmapping proguardMapping.txt# 7.指定混淆时采用的算法,后面的参数是一个过滤器# 这个过滤器是谷歌推荐的算法,一般不改变-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*# 8.保护代码中的Annotation不被混淆# 在这JSON实体映射时非常重要,比如 fastJson-keepattributes *Annotation* # 9.避免混淆泛型,# 这在JSON实体映射时非常重要,比如 fastJson-keepattributes Signature # 10.抛出异常时保留代码行号-keepattributes SourceFile,LineNumberTable # 一、基本指令 end--------------------------------------------------------------## 二、 要保留的东西 start--------------------------------------------------------## 11.保留所有的本地 native 方法不被混淆-keepclasseswithmembernames class * {native <methods>;}# 12.保留了继承自 Activity、Application这些类的子类# 因为这些子类都有可能被外部调用# 比如说,第一行就保证了所有Activity的子类不要被混淆-keep public class * extends android.app.Activity-keep public class * extends android.app.Application-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.app.backup.BackupAgentHelper-keep public class * extends android.preference.Preference-keep public class * extends android.view.View-keep public class com.android.vending.licensing.ILicensingService# 13 如果有引用 android-support-v4.jar包,可以添加下面这行-keep public class com.tuniu.app.ui.fragment.** {*;}# 14.保留在 Activity中的方法的参数是view的方法# 从而我们在 layout 里面编写 onClick就不会被影响-keepclassmembers class * extends android.app.Activity{public void *(android.view.View);}# 枚举类不能被混淆-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); }# 保留自定义控件(继承自View)不被混淆-keep public class * extends android.view.View{*** get*();void set*(***);public <init>(android.content.Context);public <init>(android.content.Context, android.util.AttributeSet);public <init>(android.content.Context, android.util.AttributeSet, int); }# 17.保留 Parcelable 序列化的类不被混淆-keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; }# 18.保留 Serializable 序列化的类不被混淆-keepclassmembers class * implements java.io.Serializable {static final long serialVersionUID;private static final java.io.ObjectStreamField[] serialPersistentFields;private void writeObject(java.io.ObjectOutputStream);private void readObject(java.io.ObjectInputStream);java.lang.Object writeReplace();java.lang.Object readResolve();}# 19.对于R(资源)下的所有类及其方法,都不能被混淆-keep class **.R$ {*;}# 20.对于带有回调函数 onXXEvent 的,不能被混淆-keepclassmembers class * {void *(**On*Event);}# 二、 要保留的东西 end----------------------------------------------------------#
1 0
- 混淆打包
- 混淆打包
- 混淆打包
- Android 代码混淆,混淆打包
- 多渠道打包-混淆打包-反编译
- Android 混淆打包编译
- Android 混淆打包
- android 签名、混淆打包
- Android 混淆打包
- Android混淆打包
- Android混淆打包
- Android 混淆打包
- android中混淆打包
- android proguard混淆打包
- Android 之混淆打包
- 混淆打包 工程
- Android混淆打包
- android 的混淆打包
- Add Two Nums
- runtime 类和对象的使用和基本的数据结构
- Red Hat上安装Eclipse经验总结
- Java7、Java8新特性了解
- java中堆和栈详解
- 混淆打包
- java中InputStream转化为byte[]数组
- 一个由PROGUARD与FASTJSON引起的血案
- java对象与字符串之间的序列化和反序列化
- 【Unity3D游戏开发】基于NGUI的表情图文混排解决方案 (二二)
- 浅谈Linux下的五种I/O模型
- mybatis-generator自定义注释生成
- 关于分布式事务那点事
- iOS开发通知那些事