关闭

android studio 代码混淆

标签: androidandroid studio
54人阅读 评论(0) 收藏 举报
分类:

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

  • 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行代码有问题。

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:55次
    • 积分:11
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    阅读排行
    评论排行