Android混淆
2015-08-27 18:21
591 查看
1.不想在为找资源撞得头破血流。
2.不想再为问人而低声下气。
作为一个程序猿,学习是自己的事,教不教是别人的事。为了,不让别人决定自己的左右,那就好好学习吧。
废话不多说,下面开始说代码:
1.project.properties(就这几行是重要的)
proguard.config=proguard.cfg
target=android-17
2.如果你对引入的第三方库不是很了解或者官方未对其混淆给出具体的实例的话,建议直接屏蔽,即不对其进行混淆。在proguard.cfg文件配置是:
-libraryjars
libs/android-support-v4.jar 引入的第三方库
-dontwarn
android.support.v4.**
告诉ProGuard不要警告找不到包名.**这个包里面的类的相关引用
-keep
class android.support.v4.** { *; } 对这个包里面的所有类和所有方法不进行混淆
其余的第三方库都是以这个形式来写
我的写法是这样的:(proguard.cfg)
-optimizationpasses 5
-dontusemixedcaseclassnames#混淆时不会产生形形色色的类名
-dontskipnonpubliclibraryclasses #指定不去忽略非公共的库类
-dontskipnonpubliclibraryclassmembers
-dontpreverify #不预校验
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* #优化
#不进行混淆保持原样
-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 com.android.vending.licensing.ILicensingService
-keep public abstract interface com.asqw.android.Listener{#所有方法不进行混淆
public protected <methods>;
}
#单个类的混淆处理
#不要混淆MyBean的所有属性与方法
-keepclasseswithmembers class MyBean {
<fields>;
<methods>;
}
#不要混淆MySuperBean所有子类的属性与方法
-keepclasseswithmembers class * extends MySuperBean{
<fields>;
<methods>;
}
#不混淆某个包下的类
-keep class 包名.** {*;}
-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);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
#安卓系统
-libraryjars libs/android-support-v4.jar
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
#极光推送
-libraryjars libs/jpush-sdk-release1.8.0.jar
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
如果项目中使用到 Gson(Json)那么要使用下面的代码
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
##---------------End: proguard configuration for Gson ----------
2.不想再为问人而低声下气。
作为一个程序猿,学习是自己的事,教不教是别人的事。为了,不让别人决定自己的左右,那就好好学习吧。
废话不多说,下面开始说代码:
1.project.properties(就这几行是重要的)
proguard.config=proguard.cfg
target=android-17
2.如果你对引入的第三方库不是很了解或者官方未对其混淆给出具体的实例的话,建议直接屏蔽,即不对其进行混淆。在proguard.cfg文件配置是:
-libraryjars
libs/android-support-v4.jar 引入的第三方库
-dontwarn
android.support.v4.**
告诉ProGuard不要警告找不到包名.**这个包里面的类的相关引用
-keep
class android.support.v4.** { *; } 对这个包里面的所有类和所有方法不进行混淆
其余的第三方库都是以这个形式来写
我的写法是这样的:(proguard.cfg)
-optimizationpasses 5
-dontusemixedcaseclassnames#混淆时不会产生形形色色的类名
-dontskipnonpubliclibraryclasses #指定不去忽略非公共的库类
-dontskipnonpubliclibraryclassmembers
-dontpreverify #不预校验
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* #优化
#不进行混淆保持原样
-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 com.android.vending.licensing.ILicensingService
-keep public abstract interface com.asqw.android.Listener{#所有方法不进行混淆
public protected <methods>;
}
#单个类的混淆处理
#不要混淆MyBean的所有属性与方法
-keepclasseswithmembers class MyBean {
<fields>;
<methods>;
}
#不要混淆MySuperBean所有子类的属性与方法
-keepclasseswithmembers class * extends MySuperBean{
<fields>;
<methods>;
}
#不混淆某个包下的类
-keep class 包名.** {*;}
-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);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
#安卓系统
-libraryjars libs/android-support-v4.jar
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
#极光推送
-libraryjars libs/jpush-sdk-release1.8.0.jar
-dontwarn cn.jpush.**
-keep class cn.jpush.** { *; }
如果项目中使用到 Gson(Json)那么要使用下面的代码
##---------------Begin: proguard configuration for Gson ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# For using GSON @Expose annotation
-keepattributes *Annotation*
# Gson specific classes
-keep class sun.misc.Unsafe { *; }
#-keep class com.google.gson.stream.** { *; }
# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { *; }
##---------------End: proguard configuration for Gson ----------
相关文章推荐
- Android中TextView的SetText()方法注意事项
- Android 百度地图SDK定位
- Android端实现用户登录
- Android 4.0新增Space及GridLayout初谈
- Android Studio简单更新方法
- Android使用ListView divider属性设置分界线,显示不出来的问题
- android开发中EditText自动获取焦点时隐藏hint的代码
- 使用GCM服务(Google Cloud Messaging)实现Android消息推送
- 使用Xcode、Android Studio将项目链接到Git
- android FLAG_ACTIVITY_CLEAR_TOP的使用
- Android framework完整源码下载
- Android任务和返回栈完全解析,细数那些你所不知道的细节
- android studio下使用SqlCipher
- java.lang.SecurityException: ConnectivityService: Neither user 10086 nor current process has android
- android md5加密和sha-1加密方法
- Android完整退出应用程序完美解决方法
- Android 集成支付宝SDK实现快捷支付--详解
- Android:Intent用法总结
- Android ActionBar总结二
- 保持Android代码颜值的一些思考