android apk 代码混淆

原创 2015年07月10日 14:49:31

总体上有以下几个原则:

1.四大组件以及自定义的View不要混淆;
2.第三方jar包不要混淆;
3.实体类不要混淆;
4.用到反射的地方不要混淆;

这里说说第三方jar包, 怎么不混淆第三方jar 包, 很简单, 
直接开jar包, 看它的包名, 如pinyin4j.jar, 它一共有三个包,
com.hp.hpl.sparta,net.sourceforge.pinyin4j, demo

那们把这三个包-kepp 不进行混淆,并dontwarn 即可。
-keep class com.hp.hpl.sparta.** {*; }
-dontwarn com.hp.hpl.sparta.**
-keep class net.sourceforge.pinyin4j.** {*; }
-dontwarn net.sourceforge.pinyin4j.**
-keep class demo.** { *;}
-dontwarn demo.**

下面是我的工程进行代码混淆的proguard.cfg

# 混淆通用设置
-optimizationpasses 5                                                           # 指定代码的压缩级别
-dontusemixedcaseclassnames                                                     # 是否使用大小写混合
-dontskipnonpubliclibraryclasses                                                # 是否混淆第三方jar
-dontpreverify                                                                  # 混淆时是否做预校验
-verbose                                                                        # 混淆时是否记录日志
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*        # 混淆时所采用的算法

# 工程定制的不需混淆的内容, 实体类不能混淆
-keep public class * extends net.easyconn.carman.common.httpapi.base.BaseRequest{*;}
-keep public class * extends net.easyconn.carman.common.httpapi.base.BaseResponse{*;}

# xUitl DbUtils 用到的实体类不能混淆
-keep class net.easyconn.carman.thirdapp.AppInfo{*;}
-keep class net.easyconn.carman.navi.route.model.RecordPath{*;}

# 工程里的其它几个工具包不必混淆
-keep class com.lidroid.xutils.** {*; }
-dontwarn com.lidroid.xutils.**
-keepattributes *Annotation*                                                   #xUtils 注解
-keep class * extends java.lang.annotation.Annotation { *; }                   #xUtils 注解

############################### 引用 android framework api 不用混淆,  通用写法 begin #####################################
-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.**{*;}
-keep interface android.support.v4.app.** { *; }
#-keep public class * extends android.widget.**{*;}

# R  文件不混淆
-keep class **.R$* {*;}
-keep class **.R{*;}
-dontwarn **.R$*

-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 *;
}
############################### 通用 END #####################################

#重写的高德的类不混淆
#-keep class _RouteOverLay
#-keep class NaviControl
#-keep class NaviIconControl

# 讯飞语音: Msc.jar see http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=5877&highlight=%E6%B7%B7%E6%B7%86
# 讯飞也用到了xUtils, 也需要 -keepattributes *Annotation*, 为统一格式, 提到Xtils处。
-dontwarn com.iflytek.**
-keepattributes Signature
-keep class com.iflytek.**{*;}

#################高德, 参考 高德官方 demo begin #############################
# As described in tools/proguard/examples/android.pro - ignore all warnings.
-dontwarn android.support.v4.**
#如果有其它包有warning,在报出warning的包加入下面类似的-dontwarn 报名
-dontwarn com.amap.api.**
-dontwarn com.aps.**
-dontwarn com.autonavi.**
#高德相关混淆文件
#3D 地图
-keep class com.amap.api.maps.**{*;}
-keep class com.amap.api.mapcore.**{*;}
-keep class com.autonavi.amap.mapcore.*{*;}
#Location
-keep class com.amap.api.location.**{*;}
-keep class com.aps.**{*;}
#Service
-keep class com.amap.api.services.**{*;}
#navi
-keep class com.amap.api.navi.**{*;}
-keep class com.autonavi.** {*; }
#2D地图
#-keep class com.amap.api.maps2d.**{*;}
#-keep class com.amap.api.mapcore2d.**{*;}
#################高德, 参考 高德官方 demo end #############################


############################shareSDK begin #######################
-keep class android.net.http.SslError
-keep class android.webkit.**{*;}
-keep class cn.sharesdk.**{*;}
#-keep class com.sina.**{*;}
-keep class m.framework.**{*;}
-dontwarn cn.sharesdk.**
############################shareSDK end #######################

########################### 以下为第三方jar 包######################
# 方法:
# 直接打开jar, 将包中的所有package 都不混淆, -keep pacagename.**{*;}
# 同时忽略警告 -dontwarn pacagename.**

# android-async-http
-keep class com.loopj.**{*;}
-dontwarn com.loopj.**

#enventbus
-keep class de.greenrobot.event.** { *;}
-dontwarn de.greenrobot.event.**

#fastjson
-keep class com.alibaba.fastjson.** {*; }
-dontwarn com.alibaba.fastjson.**

#java-websocket
-keep class org.java_websocket.** {*; }
-dontwarn org.java_websocket.**

-keep class com.ijlytek.** {*; }
-dontwarn com.ijlytek.**

#pinyin4java
-keep class com.hp.hpl.sparta.** {*; }
-dontwarn com.hp.hpl.sparta.**
-keep class net.sourceforge.pinyin4j.** {*; }
-dontwarn net.sourceforge.pinyin4j.**
-keep class demo.** { *;}
-dontwarn demo.**

#prettytime
-keep class org.ocpsoft.prettytime.** {*; }
-dontwarn org.ocpsoft.prettytime.**


#smssdk
-keep class cn.smssdk.** {*; }
-dontwarn cn.smssdk.**

#universal-image-loader
-keep class com.nostra13.** {*; }
-dontwarn com.nostra13.**

#avos
-keep class com.avos.** {*; }
-dontwarn com.avos.**

#androidannotation
-keep class com.sun.codemodel.** {*; }
-dontwarn com.sun.codemodel.**
-keep class org.androidannotations.** {*; }
-dontwarn org.androidannotations.**

#################################### 第三方jar 包 ##########################################






相关文章推荐

android apk代码混淆

  • 2014年07月15日 17:38
  • 4KB
  • 下载

Android studio 代码混淆及打包apk

为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 1. 大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文件,...

Android Studio(十一):代码混淆及打包apk

图文讲解如何进行代码混淆的配置,以及如何使用Adroid Studio打包apk文件

Android安全防护之旅---带你把Apk混淆成中文语言代码

最近想爆破一个app,没有加壳,简单的使用Jadx打开查看源码,结果把我逗乐了,代码中既然都是中文,而且是一些比较奇葩的中文字句,如图所示:瞬间感觉懵逼了,这app真会玩,我们知道因为Java语言是支...

Android应用(apk)代码混淆笔记

project.properties # This file is automatically generated by Android Tools. # Do not modify this fil...
  • pmtoam
  • pmtoam
  • 2015年06月02日 18:51
  • 535

Android APK之代码混淆与反编译

首先示例一个Android项目 , 里面包含所需要的混淆脚本以及 一些经常使用的第三方Jar包 问题1 : 如果你创建的项目里没有自带proguard.cfg这个混淆脚本,那么说明你的SDK 小...

Android studio 使用心得(五)—代码混淆和破解apk

http://www.softwareace.cn/?p=1151 这篇文章等是跟大家分享一在Android studio 进行代码混淆配置。之前大家在eclipse上也弄过代码混淆配置,其实一样,...

Android 混淆代码,使自己的apk更安全

为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 1. 大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文...

Android代码混淆防止反编译APK获取源码

上一篇说了如何反编译APK文件获取Android源代码,但是如果所有的

android .apk 混淆代码

一个xxx.apk提交给测试、 ok,去倒杯水,看看网页~~~~~ 呃,忽然觉得 是不是应该 给我的代码 提高点安全性, 记得看过 apk直接可以 解压,然后很容易的就可以 反编译出...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android apk 代码混淆
举报原因:
原因补充:

(最多只允许输入30个字)