android不混淆内部类,GitHub - HurTeng/AndroidProguard: Android代码混淆,包含了通用混淆配置,以及常用的第三方库混淆配置...

本文介绍了Android代码混淆的重要性,详细讲解了混淆的四个步骤,包括压缩、优化、混淆和预校验。提供了如何在Android Studio中启用混淆的步骤,并讨论了混淆规则的配置,包括如何防止类和成员混淆。此外,还提到了混淆检查和注意事项,如反射、Gson、Parcelable和WebView的混淆处理。最后提供了一个基础混淆模板和自定义混淆配置的示例。
摘要由CSDN通过智能技术生成

AndroidProguard

Android代码混淆,包含了通用混淆配置,以及常用的第三方库混淆配置

简介

作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使被反编译,也难以阅读。混淆概念虽然容易,但很多初学者也只是网上搜一些成型的混淆规则粘贴进自己项目,并没有对混淆有个深入的理解。本篇文章的目的就是让一个初学者在看完后,能在不进行任何帮助的情况下,独立写出适合自己代码的混淆规则。

代码压缩通过 ProGuard 提供,ProGuard 会检测和移除封装应用中未使用的类、字段、方法和属性,包括自带代码库中的未使用项(这使其成为以变通方式解决 64k 引用限制的有用工具)。ProGuard 还可优化字节码,移除未使用的代码指令,以及用短名称混淆其余的类、字段和方法。混淆过的代码可令您的 APK 难以被逆向工程,这在应用使用许可验证等安全敏感性功能时特别有用。

混淆介绍

Android中的“混淆”可以分为两部分,一部分是 Java 代码的优化与混淆,依靠 proguard 混淆器来实现;另一部分是资源压缩,将移除项目及依赖的库中未被使用的资源(资源压缩严格意义上跟混淆没啥关系)。

我们通常说的proguard(代码混淆)包括以下四个方面:

shrink(压缩): 检测并移除没有用到的类,变量,方法和属性;

optimize(优化): 分析和优化代码,优化可能会造成一些潜在风险,不能保证在所有版本的Dalvik上都正常运行;

obfuscate(混淆): 把类名、属性名、方法名替换为简短且无意义的名称,增大反编译难度;

preverify(预校验): 预校验是作用在Java平台上的(校验代码是否符合Java1.6+),Android平台上不需要这项功能,去掉之后还可以加快混淆速度。

这四个流程默认开启,在 Android 项目中我们可以选择将“优化”和“预校验”关闭,对应命令是-dontoptimize、-dontpreverify

代码混淆

Android Studio集成了Java语言的ProGuard作为压缩,优化和混淆的工具,使用起来很方便。

首先要通过ProGuard启用代码混淆,首先要在app module下的build.gradle文件将“minifyEnabled”属性设置为true,以便开启代码混淆(开启混淆会使编译时间变长,默认关闭):

android {

buildTypes {

release {

minifyEnabled true // 代码混淆(true为打开,开启混淆会使编译时间变长,默认不开启)

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

在上面的“混淆配置”中有这样一行代码

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

proguard-android.txt,这是系统默认的混淆文件,具体在../sdk/tools/proguard/ 目录下,其中包含了android最基本的混淆,一般不需要改动;

我们需要配置的是项目中app下的 proguard-rules.pro 文件

ProGuard作用

-dontshrink 关闭压缩

-optimizationpasses n 表示proguard对代码进行迭代优化的次数,Android一般为5

-dontobfuscate 关闭混淆

混淆后默认会在工程目录app/build/outputs/mapping/release下生成一个mapping.txt文件,这就是混淆规则,我们可以根据这个文件把混淆后的代码反推回源本的代码,所以这个文件很重要,注意保护好。原则上,代码混淆后越乱越无规律越好,但有些地方我们是要避免混淆的,否

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值