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应用程序的源代码。

Android 简单的代码混淆_第1张图片

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进行反编译。

Android 简单的代码混淆_第2张图片

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

更多相关文章

  1. 重新解压打包android 根文件系统 ramdisk.img
  2. Android XMl文件中tools前缀
  3. android ndk 开发之 在 应用程序中使用 jni
  4. android中读写sd卡文件
  5. Android 支持的文件类型
  6. Android下载文本文件和mp3文件
  7. android project 文件夹

随机推荐

  1. Android中短信的广播接收问题
  2. Android中定义接口的用法
  3. android 处理双击事件
  4. 找不到R.java 解决方法
  5. Android的APK文件反编绎
  6. Android(安卓)Studio 无法引用org.apache
  7. 其实你不懂:Android之TextView 不常用的几
  8. android 正确获取屏幕像素大小
  9. Android Dialog的封装
  10. Android Sync 同步 源码问题解决方案