android混淆

本文介绍如何使用Android Studio 4.4进行代码混淆,包括在Gradle中启用混淆、修改proguard规则以保护特定类和库不受混淆的影响等内容,并分享了作者在混淆过程中遇到的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

       最近我负责的项目要添加混淆,有点小棘手,之前只是知道有这么东西,但是没有真正做过代码的混淆,于是各种google,在此记录一下

二、混淆

       工具:as+4.4

       1.首先在项目的gradle中开启混淆

          在android->buildTypes->debug or release节点中设置 minifyEnabled 为true

       2.修改proguard-rules.pro文件

         修改这个文件首先要知道混淆的一些基本的原则

        ①混淆只是混淆我们自己的代码

        ②过滤掉第三方的jar包和依赖

        ③项目中的实体不能混淆,否则json解析不出来

        ④android中自己的组件不能混淆

        只要把握住这几个规则一般都不会有问题

        贴一下我们项目的混淆

             

#基本混淆代码 贴到项目中就能用
-dontshrink
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-ignorewarnings#忽略警告 也可以用
-dontwarn
-allowaccessmodification
-dontskipnonpubliclibraryclassmembers
-keepattributes *Annotation*

#android中不加混淆的类
-keep public class com.huimin.shop.huiminshop.base.F{*;}
-keep public class * extends android.app.Fragment
-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.support.v4.**
-keep public class * extends android.support.v7.**
#===================================================================================================
#Picasso混淆
-keep class com.squareup.picasso.* {*;}
#fastjson混淆
-keep class com.alibaba.fastjson.** { *; }
#Gson混淆
-keep class com.goole.gson.**{*;}
#bean实体屏蔽混淆
-keep class com.huimin.shop.huiminshop.classify.entity.**{ *; }
-keep class com.huimin.shop.huiminshop.homepage.entity.**{ *; }
-keep class com.huimin.shop.huiminshop.mycenter.entity.**{ *; }
-keep class com.huimin.shop.huiminshop.shopcar.entity.**{ *; }
#cobub
-keep class com.wbtech.ums.**{*;}
#xutils混淆
-keep class org.xutils.** { *; }
#百度地图
-keep class com.baidu.** {*;}
-keep class vi.com.** {*;}

           基本配置没太多研究,看字面意思可以大概能明白每个配置都是干嘛的

       所谓不加混淆的类就是android自身的组件,环境及goole提供的support包

       第三方包格式都固定,可以自己手动找到用到的类然后逐个屏蔽,也可以把整个包都屏蔽,这里都是把整个包都屏蔽了;一般来说第三方关于混淆的内容在第三方的官网都会有说明也可以自己逐个进入官网看看

三、小结

        在混淆时遇到了两个问题

      1.重复混淆,对于libs下的jar混淆自己写了两遍,导致签名打包时编译通不过

      2.最开始一直没有对bean实体进行混淆,导致每次打完包安装到手机上都没有数据,反复搞了好几次,改了n多次配置都不行,然后看了看安装后项目运行打出的日志,发现网络请求成功,但是就是显示不出来,于是定位到bean,把所有bean屏蔽混淆后,问题解决


评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值