android混淆与反射

Android包4.0(好像是4.0)以后混淆更加简单

 

1、在project.properties.txt将以下内容注释去掉

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt


2、在proguard-project中加入取消混淆的声明:

# 需要混淆的jar包所依赖的jar包

-libraryjars 'F:\eclipse\adt-bundle-windows-x86-20130917\sdk\platforms\android-19\android.jar'

-optimizationpasses 5  

 

# 混淆时不会产生形形色色的类名

-dontusemixedcaseclassnames  

 

# 指定不去忽略非公共的库类

-dontskipnonpubliclibraryclasses  

 

# 不预校验

-dontpreverify 

 

-verbose  

 

# 优化

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

 

# 保留了继承自Activity、Application、Service、BroadcastReceiver、ContentProvider、BackupAgentHelper、Preference和ILicensingService  的子类。因为这些子类,都是可能被外部调用的。

-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 class * extends android.support.v4.app.FragmentActivity  

-keep public class * extends android.support.v4.app.Fragmen

 

 

# 保留了含有native方法的类

-keepclasseswithmembernames class * {  

    native <methods>;  

}  

# actionbarSherlock 这里要注意了

-keep class android.support.v4.app.** { *; }  

-keep interface android.support.v4.app.** { *; }  

-keep class com.actionbarsherlock.** { *; }  

-keep interface com.actionbarsherlock.** { *; }  

-keepattributes *Annotation*

 

# 保留构造函数从xml构造的类(一般为View的子类)

-keepclasseswithmembernames class * {  

    public <init>(android.content.Context, android.util.AttributeSet);  

 

# 保留构造函数从xml构造的类(一般为View的子类)

-keepclasseswithmembernames class * {  

    public <init>(android.content.Context, android.util.AttributeSet, int);  

 

# 保护指定类的成员,如果此类受到保护他们会保护的更好

-keepclassmembers class * extends android.app.Activity {

    public void *(android.view.View);

}

 

# 保留枚举类型中的values和valueOf静态方法

-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 *;  

}

 

# 保留反射中用到的类和方法,到时根据具体情况再改

# 反编译测试的时候有效,运行时也与未混淆情况一样

-keepclassmembers class 包名.** {

   public *;

   protected *;

   private *;

}

3、工程中含有第三方jar包,或者.so文件 混淆处理。

 -libraryjars libs/apns_1.0.6.jar                           
 -libraryjars libs/armeabi/libBaiduMapSDK_v2_3_1.so
 -libraryjars libs/armeabi/liblocSDK4.so
 -libraryjars libs/baidumapapi_v2_3_1.jar
 -libraryjars libs/core.jar
 -libraryjars libs/gesture-imageview.jar
 -libraryjars libs/gson-2.0.jar

4、 其它反射调用的java类与方法
使用反射时一定要注意proguard可能会认为那些方法未被调用过, 会在代码优化过程中将它们改名或除去. 在使用反射的地方一定要在proguard-project.txt中配置, 不优化反射调用过的类和方法


下面开始打包(不打包你就算设置了其实也没有混淆,不信可以解混淆试试,能成功解混淆)

 

二、在jdk的bin目录下生成.keystore证书,输入相关资料,记住口令。

140045_KiNA_262922.png

二、右键—>Android Tools>Export signed Application package

140144_zxdE_262922.png

140144_Gvyr_262922.png

140144_sZAq_262922.png

140145_x9JR_262922.png


转载于:https://my.oschina.net/u/262922/blog/301507

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值