android studio 代码混淆

原创 2015年11月20日 17:11:26

为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤:

  • studio 代码混淆配置
    在你的工程项目下新建proguard-rules.txt一个文件,文件的具体内容如下:
-optimizationpasses 5  # 指定代码的压缩级别

-dontusemixedcaseclassnames  # 是否使用大小写混合

-dontpreverify    # 混淆时是否做预校验

-verbose  # 混淆时是否记录日志

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  # 混淆时所采用的算法

-keep public class * extends android.app.Activity   # 保持某些类不被混淆,因为有些类经过混淆会导致程序编译不通过,通常是一些android自带的类,或者使一些jar包中的.

-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

-keep class com.jiusg.mainscreenshow.service.** {*;}

-dontwarn com.jiusg.mainscreenshow.service.** # 去掉在混淆编译时产生的某些警告,可能导致混淆不通过

然后在build.gradle文件中加入一下代码引用刚新建的这个文件

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

其中minifyEnabled true 是控制是否混淆的开关

最后直接打包你的apk就是混淆后的结果了,apk大小也会减少些。

  • 如何查看自己的混淆结果

成功混淆后如何查看自己代码是否混淆成功了呢?

1.用压缩软件打开你的apk,取出classes.dex文件,你所有编译了的class类都在这个文件中。

2.还原.jar文件,这一步需要用到一个工具 dex2jar ,可以点此下载,也可以自行百度

3.把下载下来的解压,然后把classes.dex文件放到 dex2jar的解压目录里,如下图
这里写图片描述
然后,cmd 命令行 ,目录切换到 dex2jar的目录下,运行如下命令

dex2jar.bat classes.dex

等他Done后,你会在dex2jar的目录里发现classes_dex2jar.jar这个文件,直接用压缩软件打开,你就可以看见混淆的结果了。

  • 代码混淆后,抓取崩溃信息问题

代码混淆后,抓取程序崩溃信息发送给服务器的问题:
请看如下图,是我按照上述方法混淆,程序崩溃后,服务器收到的信息:
这里写图片描述
其中这句 at com.jiusg.mainscreenshow.ui.Setting.onCreate(Unknown Source),让你根本不知道是具体的那行代码出了问题。
这时,你可以在上述的proguard-rules.txt文件中加入以下代码

-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

在编译,运行app崩溃后,服务器抓取到的结果,如下图
这里写图片描述
这时,之前的Unknown Source被替换成了SourceFile:64,也就是说第64行代码有问题。

Android Studio实现代码混淆

对于使用签名的apk,常用的反编译之后还是能查看class文件的代码实现,对于反编译可查看个人的博客点击打开链接 使用代码混淆就能是这种常规反编译失效 1,在build.grandle添加,其中规...
  • bjstyle
  • bjstyle
  • 2015年07月22日 11:52
  • 7434

AndroidStudio中代码混淆以及打包操作

摸索了两天,大概了解了在AndroidStudio中代码混淆和打包发布的过程,在此记录下。代码混淆:关于代码混淆的作用,就不多解释了,整个过程大致如下: 在app下的build.gradle文件中添加...
  • TTCCAAA
  • TTCCAAA
  • 2015年08月15日 22:37
  • 16251

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

图文讲解如何进行代码混淆的配置,以及如何使用Adroid Studio打包apk文件
  • zuiwuyuan
  • zuiwuyuan
  • 2015年09月21日 22:45
  • 19218

Android Studio 代码混淆(你真的会混淆吗)

一、前言今天要打包新产品,突然忘了混淆的参数是怎么写的了,虽然之前也混淆过,可是具体配置的参数代码有些记不起来了,因此决定花点时间写篇博客记录一下,方便以后查找和自己的记忆。二、Android Stu...
  • Two_Water
  • Two_Water
  • 2017年04月18日 23:14
  • 11815

Android studio 代码混淆和打jar包

1、在AndroidStudio IDE中要打jar包,首先在原来的工程下创建一个module,类型为Android Library 2、如果有引用其他jar包,则将其他jar包放入到module的...
  • lnniyunlong99
  • lnniyunlong99
  • 2017年01月16日 13:45
  • 236

Android Studio 混淆代码

最近几天混淆代码遇到了一些问题,整理一下!~ 首先app里面gradle里面配置一下 buildTypes { release { buildConfig...
  • u011625768
  • u011625768
  • 2016年05月27日 18:08
  • 1069

Android studio--代码混淆

混淆就是对发布出去的程序进行重新组织和处理,使得处理后的代码与处理前代码完成相同的功能,而混淆后的代码很难被反编译,即使反编译成功也很难得出程序的真正语义。被混淆过的程序代码,仍然遵照原来的档案格式和...
  • chaoyu168
  • chaoyu168
  • 2018年01月08日 16:03
  • 72

Android Studio代码混淆配置

直奔主题:  1,首先要在build.gradle中开启混淆,也就是minifyEnabled true,我用的build.gradle具体如下所示: def releaseTime() { ...
  • u014800493
  • u014800493
  • 2017年01月20日 16:52
  • 341

android studio代码混淆注意问题

Java 是一种跨平台的、解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中。由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名、方法名,并且通过这些名称来访问...
  • jdsjlzx
  • jdsjlzx
  • 2016年07月08日 15:45
  • 25492

android studio环境下代码混淆(混淆完了直接打包就可以运行)

#说明:在本文中#代表注释;keep表示保留这个不被混淆;混淆具体过程可见每段代码上方说明。 #最好保留自定义的实体类,自定义的接口,自定义的基础类(如:BaseActivity),自定义的工具类和...
  • NakajimaFN
  • NakajimaFN
  • 2017年11月03日 17:46
  • 108
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android studio 代码混淆
举报原因:
原因补充:

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