android studio 配置代码混淆规则

Android Studio 开启配置混淆功能可能遇到的问题以及解决思路 前言: 这篇文章是本月发表的第三篇了。这个月说实在是比较没那么忙,所以就将开发中遇到的一些问题都给整理成博客。发出来给大家共享!也是自己实在记性差,需要写成博客 也避免自己忘记了。 正文: 那我们就直接开始吧,还是老样子,直接上图、上代码。 第一步:在 build.gradle 文件下开始混淆功能 buildTypes { deb 阅读详情

对于现在稍微大型点的app都有一定的安全措施。比如采用https替换http,请求参数签名,加密.敏感数据jni方式保存.另外就是防止反编码提高安全度减小apk大小的代码混淆,今天我主要讲解下android studio  代码混淆配置规则:

1.对于每个独立的applicationid(理解不同app)要配置代码混淆都要在优先在其对应的app  gradle下配置以下属性:

minifyEnabled true//开启混淆
shrinkResources true//打开资源压缩
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//混淆配置文件,as默认自动生成了
signingConfig signingConfigs.release

minifyEnabled 为true的时候就表示开启混淆了,代码混淆的配置规则就在proguard-rules.pro文件下。首先说明一点:默认情况下as自动生成了proguard-rules.pro文件,如果你在gradle里设置了minifyEnabled true并且proguard-rules.pro里面你未添加任何配置,这时候你运行项目你会发现进入界面就自动闪退.因为你开启混淆了,但是有的第三方sdk类,或者四大组件,反射等是不能混淆的运行时系统找不到某些类所以会闪退.

shrinkResources 未true表示压缩资源文件,也可以理解为删除无用资源,一般情况我们都将其与minifyEnabled 配合使用

2.配置proguard-rules.pro文件

对于分moudle开发的项目或者没有分的我们一般只需要在app模块对应的proguard-rules.pro文件进行配置

代码混淆基本规则:

指定压缩级别
-optimizationpasses 5

#不跳过非公共的库的类成员
-dontskipnonpubliclibraryclassmembers
# 不做预校验,preverify是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。
-dontpreverify

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

#把混淆类中的方法名也混淆了
-useuniqueclassmembernames
# 保留Annotation不混淆 这在JSON实体映射时非常重要,比如fastJson
-keepattributes *Annotation*,InnerClasses
#优化时允许访问并修改有修饰符的类和类的成员
-allowaccessmodification
# 列出从apk中删除的代码
-printusage unused.txt
#忽略警告
-ignorewarnings
#保留行号
-keepattributes SourceFile,LineNumberTable
#保持泛型
-keepattributes Signature
# 移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用,这里可以作为禁止log打印的功能使用
# 记得proguard-android.txt中一定不要加-dontoptimize才起作用
# 另外的一种实现方案是通过BuildConfig.DEBUG的变量来控制
-assumenosideeffects class android.util.Log {
    public static int v(...);
    public static int i(...);
    public static int w(...);
    public static int d(...);
    public static int e(...);
}

#保持所有实现 Serializable 接口的类成员
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}
#四大组件相关不能混淆
-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 * extends android.view.View
#
#----------------------------- (项目中没有可以忽略) -----------------------------
#
#webView需要进行特殊处理
-keepclassmembers class fqcn.of.javascript.interface.for.Webview {
   public *;
}
-keepclassmembers class * extends android.webkit.WebViewClient {
    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
    public boolean *(android.webkit.WebView, java.lang.String);
}
-keepclassmembers class * extends android.webkit.WebViewClient {
    public void *(android.webkit.WebView, jav.lang.String);
}
#在app中与HTML5的JavaScript的交互进行特殊处理
#我们需要确保这些js要调用的原生方法不能够被混淆,于是我们需要做如下处理:
-keepclassmembers class com.ljd.example.JSInterface {
    <methods>;
}
#百度地图
-keep class vi.com.**{*;}
-keep class com.baidu.** {*;}
-keep class vi.com.gdi.bgl.**{*;}
-keep class mapsdkvi.com.** {*;}
#native方法不被混淆
-keepclasseswithmembernames class * {
    native <methods>;
}
#环信
-keep class com.hyphenate.**{*;}
-dontwarn com.hyphenate.**
-keep class com.superrtc.** {*;}
#一些实体类不混淆
-keep class com.cdxt.doctor.base.lib.SweetAlert.* {*;}
-keep class com.cdxt.doctor.base.model.** {*;}
-keep class com.cdxt.doctor.base.net.** {*;}
-keep class com.cdxt.doctor.base.param.** {*;}
-keep class com.cdxt.doctor.base.router.** {*;}

总之一般来说我们除了配置基本规则,就是项目中引用的第三方包,特别是第三方sdk这些混淆配置都是根据对应第三方文档要求复制过来的.

 

Android Studio 中创建配置签名,代码混淆以及打包中常见的问题 今天给自己的项目进行打包更新的时候出现了很多问题。 本次针对的是Android Studio 3.4版本。 今天从签名部分从头开始写一些每一步骤和会出现的问题。 首先先Build签名打包 照常选择APK 接着Create new 接着填写信息,看下面翻译慢慢填,个人觉得随意填,只要记住密码就行。 Key store path : 签名文件路径 Password : 签名密码 Confirm ... 阅读详情

相关推荐

UG二次开发避坑指南:如何正确配置Python环境让NXOpen脚本跑起来?

本文详细介绍了UG/NX二次开发中Python环境配置的全流程与NXOpen脚本调试技巧,帮助开发者避开常见陷阱。从NXOpen架构解析到Python解释器版本匹配,再到环境变量设置与路径问题处理,提供了一套经过验证的配置方案,确保脚本顺利运行。

weixin_33859135的博客 450

Android--混淆配置(比较详细的混淆规则)

Android--混淆配置(比较详细的混淆规则)

weixin_42602900的博客 2万+

总结所有的池化(Pooling)方法

为什么池化? 池化(Pooling)层和卷积层、全连接层一样,都是卷积神经网络的组成部分。 卷积神经网络中的卷积层会将卷积Filter应用于输入图像,以便创建特征映射来总结输入中这些特征的存在。 卷积层被证明是非常有效的,在深层模型中叠加卷积层可以让接近输入的层学习低层特征(如线条),在模型中更深(高)的层用于学习高阶或者更抽象的特征,如形状或特定对象。 卷积层特征映射输入的一个局限性是它们只能精确记录特征在输入层的位置。这意味着在输入图像中特征位置的小幅移动将导致不同的特征映射。这可以随着重新裁剪

大脸猫的博客 1万+

最简单的用Android Studio实现代码混淆(ProGuard)

安卓app代码混淆

oAiYinSiTan12的博客 4703

HIC测序数据生信分析——第三节,HIC数据挂载

(取决于是否运行①prune模块,若①运行,则③运行;#HIC预处理后的比对文件Unknown_BM942-001H0001_1_val_1.Unknown_BM942-001H0001_2_val_2.hicup.bam 和contig基因组序列文件genome.fa。#HIC预处理后的比对文件Unknown_BM942-001H0001_1_val_1.Unknown_BM942-001H0001_2_val_2.hicup.bam 和contig基因组序列文件genome.fa。#这个方法简单一点。

weixin_44616693的博客 3598

如何从零开始写小程序

看了这篇文章,即使让我现在就从头写一个能够正常运行的小程序,也没有原本想象中的那么难了。 在本文中,我们将会以一个具体的小程序为例,带领大家从零到一完成一个小程序的开发流程,并将这个小程序上传到 FinClip.com 进行小程序提审与上架操作。 我们新建了一个叫做「HelloWorld」的小程序,FIDE 在初始化小程序项目时,会自动在项目目录中补充对应所需要的项目文件。那不妨让我们先从小程序目录下的配置文件开始,逐渐揭开小程序的面纱。 使用 FIDE 编辑小程序 1. 认识 json 文件 在小程序项目

POHOU23的博客 4396

Andriod --- 如何理解混淆配置?

今天看到一篇有关Android混淆配置比较好的文章,拿出来分享给大家,一起学习!android studio自带java语言的ProGuard工具,主要用来压缩、优化、混淆,然后配合Gradle构建工具实现混淆。

梁同学与Android 1163

低代码组件开发——OpenClaw智能助手的组件设计与开发(2026技术版)

OpenClaw智能助手的低代码组件开发平台采用分层架构设计,包含组件定义、注册、配置、渲染和生命周期管理等核心模块。该系统支持UI、功能、数据和集成四种组件类型,强调可重用性、可配置性和可扩展性。组件定义通过TypeScript、React等技术实现组件结构和行为的描述,组件注册中心基于Node.js和MongoDB管理组件版本。该平台通过React、Redux等技术实现组件渲染和状态管理,并提供完整的生命周期管理机制。这种架构设计显著提升了智能助手应用的开发效率和质量。

一键难忘的博客 407

Android Studio如何做混淆

概述 ProGuard是一个Java类文件压缩器、优化器、混淆器、预校验器: 压缩阶段会检测和移除未使用的类、字段、方法、属性。ProGuard以递归的方式检查并决定哪些类和类成员是被用到的,而其他没有用到的类和类成员就会被丢弃。 优化阶段会分析并优化方法的字节码。ProGuard会进一步优化代码。其他优化包括不是入口点的类或方法可能会变成private、final、static,而没有使用的参...

weixin_40763897的博客 3853

谁还攥着旧的类加载器:Metaspace OOM 的元数据记账、类卸载条件与泄漏定位解析

MetaSpace区是JVM内存管理中的关键部分,负责存储类元数据。随着Java 8的推出,MetaSpace取代了PermGen区,但其灵活性也带来了新的挑战,尤其是在动态类加载和频繁类更新的场景下,容易导致MetaSpace内存溢出(OOM)问题。本文探讨了MetaSpace OOM的根本原因,包括类加载器泄漏、内存管理不当和GC效率低下等,并提供了一系列调优策略和解决方案,帮助开发者有效排查和防止此类问题的发生,确保应用程序的稳定性和高可用性。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 15万+

YOLO11 Backbone改进:二值化、三值化权重实战(一)

本文介绍了二值化/三值化神经网络的基本概念、优势挑战及应用场景。二值化网络将权重限制为±1,三值化则增加0值,显著减少模型存储需求和计算复杂度。虽然存在精度下降等挑战,但通过技术改进已能在移动设备、自动驾驶等领域应用。文章分析了YOLO11中适合量化的层,并详细阐述了二值化权重原理及Straight-Through Estimator等关键技术。二值化/三值化神经网络为资源受限设备提供了高效的深度学习解决方案。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 298

android studio代码混淆配置,android-studio/代码混淆规则配置文件proguard-rulespro.md at master · quanke/android-studio...

代码混淆规则配置文件:proguard-rules.pro如果我们想在打包的时候进行代码混淆,就需要在proguard-rules.pro中配置代码混淆规则.常用的代码混淆规则:# 在这里添加项目的代码混淆规则# 混淆规则请参考:http://proguard.sourceforge.net/index.html#manual/usage.html##################### 一般使...

weixin_39997443的博客 238

Python爬虫实战:利用Playwright和反反爬技术高效抓取Bloomberg金融数据

用户行为分析(鼠标移动、点击模式)请求头检测IP频率限制WebSocket通信验证Canvas指纹识别我们的爬虫需要模拟人类行为,使用代理IP池,并合理控制请求频率。

2201_76125261的博客 1020

Android studio 代码混淆使用 —— ProGuard

Android studio 代码混淆使用 —— ProGuard

王小六的博客 1910

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android Studio 代码混淆核心解释

先看看官方的proguard-android.txt文件,位于/tools/proguard目录下,不知道怎么写,可以当成模板,复制一份出来到自己的工程,改成自己项目所需的混淆配置。用以上方法保持类后,你会发现类名虽然未混淆,但里面的具体方法和变量命名还是变了,这时如果既想保持类名,又想保持里面的内容不被混淆,我们就需要以下方法了。两个常用的混淆命令,注意一颗星表示只是保持该包下的类名,而子包下的类名还是会被混淆;最后提供一份基本的混淆模板,当然第三方库,或者上面提到的地方,根据自己的实际需求进行混淆。

u011652925的博客 634

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android studio混淆插件,AndroidStudio 混淆

1.Android Studio 代码混淆基本配置在工程目录下,找到 proguard-rules.pro 文件,它就是你要进行编写混淆配置的文件,在这个文件中编写混淆规则当然,在这之前,还需要在你 module 的 build.gradle 文件中引用该混淆文件:上面中的 proguard-android.txt 文件,这是系统默认的混淆文件,具体在../sdk/tools/proguard/ ...

weixin_28864485的博客 549

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android混淆

混淆(安全战)proguard 由于Java代码是很容易被反编译出来,看到你的源码。因此为了更好的保护我们的源码,我们需要对编译好的class,进行混淆处理。ProGuard混淆代码的开源地址 混淆的语法-include {filename} 从给定的文件中读取配置参数 -basedirectory {directoryname} 指定基础目录为以后相对的档案名称 -i

细心程度决定你的成败 2291

android混淆打包stub错误,1.14.20 代码混淆规则配置文件:proguard-rules.pro - Android Studio 使用艺术...

如果我们想在打包的时候进行代码混淆,就需要在proguard-rules.pro中配置代码混淆规则.常用的代码混淆规则:# 在这里添加项目的代码混淆规则# 混淆规则请参考:http://proguard.sourceforge.net/index.html#manual/usage.html##################### 一般使用默认 ###################### 不使...

weixin_29327525的博客 328

Android proguard代码混淆

之前我写过一篇博客Android APK的反编译和重新打包讲解了APK反编译方面的知识,包括反编译代码、反编译资源、以及重新打包等内容。那么本文我们来学习一下如何防止自己的APK被别人反编译,即代码混淆。 代码混淆并不是让代码无法被反编译,而是将代码中的类、方法、变量等信息进行重命名,将它们改成一些毫无意义的名字,譬如A类的b()方法等。所以说代码混淆可以在不影响程序正常运行的前提下让破解者很头疼

Watson的博客 6716

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

一、前言今天要打包新产品,突然忘了混淆的参数是怎么写的了,虽然之前也混淆过,可是具体配置的参数代码有些记不起来了,因此决定花点时间写篇博客记录一下,方便以后查找和自己的记忆。二、Android Studio 代码混淆基本配置在工程目录下,找到 proguard-rules.pro 文件,它就是你要进行编写混淆配置的文件,在这个文件中编写混淆规则当然,在这之前,还需要在你 module 的 build

GitHubClub 4万+

studio 代码混淆

Android Studio实现代码混淆 时间:2015-07-22 13:04:29      阅读:36753      评论:0      收藏:0      [点我收藏+] 标签:android-studio 1,在build.grandle添加,其中规则写在proguard-rules.pro中,也可以自定义一个文件,将其代替,比如eclipse常用的 pr

rongbinjava的博客 189

Android Studio 通用混淆

作者:HarryXR链接:https://www.jianshu.com/p/456befeef08a来源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并...

Android技术之家 1040

Android studio 使用心得(五)—代码混淆和破解apk

这篇文章等是跟大家分享一在Android studio 进行代码混淆配置。之前大家在eclipse上也弄过代码混淆配置,其实一样,大家可以把之前在eclipse上的配置文件直接拿过来用。不管是.cfg文件还是.txt文件都一样。 先给大家贴一个混淆模板吧。注释很清楚。是我目前一个项目用的proguard.cfg配置文件 ? 1 2 3 4 5 6 7 ...

weixin_30852419的博客 86

Android studio 使用心得(五)---代码混淆和破解apk

这篇文章等是跟大家分享一在Android studio 进行代码混淆配置。之前大家在eclipse上也弄过代码混淆配置,其实一样,大家可以把之前在eclipse上的配置文件直接拿过来用。不管是.cfg文件还是.txt文件都一样。 先给大家贴一个混淆模板吧。注释很清楚。是我目前一个项目用的proguard.cfg配置文件 ? 1 2 3 4

711

转自郭霖大神的混淆代码

转载请注明出处:http://blog.youkuaiyun.com/guolin_blog/article/details/50451259  本来想自己写一篇反编译的,但是偶然的机会看到郭霖大神写的反编译,感觉要比自己想到的要全面多好多,不愧是大神,干脆把博文拉过来,好好研究下 混淆 本篇文章中介绍的混淆技术都是基于Android Studio的,Eclipse的用法也基本类似,但是就不

yuan1993711的博客 2413
上一篇: webview实现js与android交互
下一篇: Manifest merger failed with multiple errors, see logs问题处理
ZyClient
博客等级 码龄10年 29粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值