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 aar 生成 和代码混淆

本文主要讲解如何将一个app模块改造生成一个带界面资源的库,也就是aar。 接着还讲到,如何修改混淆配置,生成混淆后的aar。1. aar 生成1.1 build.gradle 文件 模块是libr...

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

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

Android Studio实现代码混淆

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

Android Studio多渠道打包和代码混淆教程 【亲测可用】

from : http://www.tuicool.com/articles/mQZNvey 时间 2015-11-18 10:13:14  极客头条 原文  http://coo...

android studio代码混淆配置

android studio代码混淆文本编写-在build.gradle里面开启minifyEnabled true具体配置如下 debug { minifyEnable...

Android Studio 打Jar包和混淆代码。

打Jar包的几种方式:def SDK_BASENAME = "Sdk";//打包后名字 def SDK_VERSION = "_V1.0";//${defaultConfig.versionName}...
  • c__chao
  • c__chao
  • 2017年01月30日 17:09
  • 719

Android Studio系列之代码混淆proguardFiles

前言:android代码编译成apk后如果没有进行任何防护措施是很容易被反编译的,并且反编译的结果甚至就是简单的源码,带来的损失可大可小。幸好,AndroidStudio提供编译代码加密,即ProGu...

Android Studio多渠道打包和代码混淆教程

什么是Gradle Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的领域特定(DSL)语言。And...

Android Studio的代码混淆

与eclipse不同的是,AS下的混淆文件名为:proguard-rules.pro,放在:app/proguard-rules.pro目录下。 直接打开:app/proguard-rules.pr...

Android Studio代码混淆插件

之前给公司的App添加代码混淆,在代码的混淆过程也遇到了不少的问题,再加上最近学习了一下Android Studio插件的开发,所以就开发一个代码混淆插件方便项目的代码混淆。 截图第三方库列表清单目前...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android studio 代码混淆
举报原因:
原因补充:

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