Android的代码混淆是开发者需要了解的相关知识,它能够防止android应用程序的反编译。因为android程序多数是java语言开发的,而java代码很容易被反编译,所以为了使android应用程序代码应用一定的安全性,进行android代码的混淆是非常有必要的。

在了解代码混淆之前,先了解android的反编译。进行android的反编译需要借助两个工具dex2jar和jd-gui。

1.代码的反编译

在两个工具准备好之后,将apk文件的直接解压。在解压后的文件中,将classes.dex复制到dex2jar的文件夹中。输入命令:dex2jar.bat classes.dex ,回车。在dex2jar文件夹中会生成classes_dex2jar压缩文件。用jd-gui打开该文件,即可看到android应用程序的源代码。

2.代码混淆

在android工程中添加proguard.cfg.文件。在project.properties中添加proguard.config=proguard.cfg。

-ignorewarnings-libraryjars libs/android-support-v4.jar-libraryjars libs/gson-2.2.4.jar-optimizationpasses 5-dontusemixedcaseclassnames-dontskipnonpubliclibraryclasses-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 com.android.vending.licensing.ILicensingService-keepclasseswithmembernames class * {    native <methods>;}-keepclasseswithmembernames class * {    public <init>(android.content.Context, android.util.AttributeSet);}-keepclasseswithmembernames class * {    public <init>(android.content.Context, android.util.AttributeSet, int);}-keepclassmembers enum * {    public static **[] values();    public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable {  public static final android.os.Parcelable$Creator *;}
proguard.cfg

3.项目打包

右键工程,选择androidtools-export unsinged application package。对打包的apk进行反编译。

可以看到,代码都已经进行编译过了。未签名的apk包并不能够安装,还需要将apk进行签名。

更多相关文章

  1. Android与js交互实例
  2. Android界面布局——视图/容器易混淆点总结
  3. Akita 一套Android快速开发库 发布1.2版本
  4. Android的android:clipChildren属性
  5. Android调用WCF
  6. Kotlin让Android更简单~
  7. Android与js交互实例
  8. 在Android(安卓)Studio 编写应用程序,在模拟器中显示“我对Androi
  9. Android(安卓)requires compiler compliance level 5.0 or 6.0.

随机推荐

  1. 动画:浅谈后台 MVC 模型与 MVVM 双向绑定
  2. 动画:扫盲 Git 版本控制
  3. 吭哧吭哧写了两年,所有文章分类汇总!
  4. 面试官:MySQL怎么查看表占用空间大小
  5. 你是如何变的自律的?
  6. 官方示例(十二):网页加载道路及Geoline开发T
  7. 动画:如何用广度和深度优先搜索找到女朋友
  8. 编程生涯 | “我到底要学习哪门语言?”
  9. 这届毕业生太难了!!!
  10. 入土系列 | 前端入门实战项目(九)