48

是否有任何混淆工具可与Android Studio一起使用?IntelliGuard 插件被声明为Studio 支持,但由于缺少 AntSupport 插件,它实际上不起作用。我无法在存储库中找到一个。有任何想法吗?

PS Android Studio 构建过程基于 Gradle,所以我根本不希望看到 Ant 支持。也许我错了。

4

5 回答 5

69
  • 基本混淆

要在 Android Studio 中混淆代码,只需转到 Android Studio 项目中的 build.gradle 文件:

在此处输入图像描述

将 minifyEnabled 属性从 false 更改为 true

在此处输入图像描述

这是一个基本的混淆。

生成apk后,用任何软件反编译apk都可以看到混淆结果。此页面可以帮助您:

http://www.decompileandroid.com/

在混淆结果中,您将看到具有名称的类:a,b,c....

在此处输入图像描述

并且混淆变量和方法的名称也将像 aa,c,ac...

在此处输入图像描述

  • 普通混淆:

要以更复杂的形式混淆代码,您可以转到根目录应用程序并创建一个 .pro 文件。例如在下图中我创建了文件:proguard-rules-new.pro。在同一目录中,您应该会看到一个名为 proguard-rules.pro 的文件

在此处输入图像描述

现在将您创建的文件添加到 build.gradle 文件中

在此处输入图像描述

并使用您自己的自定义 proguard 规则编辑您创建的 .pro 文件

在此处输入图像描述

于 2015-05-29T16:01:20.333 回答
20

首先minifyEnabled在你的 build.gradle 文件中启用,比如

minifyEnabled true

在此之后,在 progurad-rules.txt 文件中添加以下行

-keep class yourpackage.** { *; }
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose

要检查其工作正常,请访问:

http://www.javadecompilers.com/apktool网站,以便您可以在反编译后进行验证。

它会起作用,您的课程将完全隐藏。

于 2017-07-10T13:16:07.890 回答
12

更新: R8在 android studio 3.4.0 及以上版本中默认启用

在 android studio 3.4+ 中,默认情况下启用 R8,因此无需添加其他属性,尽管您可以通过添加 fullMode属性来选择深度优化gradle.properties

android.enableR8.fullMode=true 

proguard您可以通过在 as 中添加以下属性来禁用和启用 R8 gradle.properties

android.enableR8 = false
useProguard = true

Android 2018 年 9 月发布新工具R8收缩器和混淆工具。

R8 - R8 是一个 java 代码压缩器和压缩工具,可将 java 字节码转换为优化的 dex 码

对于低于 3.4.0 的 AS 版本。

  1. 打开gradle.properties
  2. 添加android.enableR8 = true

作为

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit

android.enableR8 = true

最低要求

  • Android studio 3.2 2018 年 9 月或以上版本
  • 爪哇 8

R8 工具

R8 支持 Proguard:

请记住,R8 旨在与您现有的 ProGuard 规则一起使用,因此您可能无需采取任何措施即可从 R8 中受益。但是,由于它是一种与专为 Android 项目设计的 ProGuard 不同的技术,因此缩小和优化可能会导致删除 ProGuard 可能没有的代码。因此,在这种不太可能发生的情况下,您可能需要添加额外的规则以将该代码保留在构建输出中。

在 AS 3.4.0 及更高版本中禁用 R8:

# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false

注意:对于给定的构建类型,if you set useProguard to false在您的应用模块的 build.gradle 文件中,AndroidGradle plugin uses R8会针对该构建类型收缩您的应用代码,而不管whether you disable R8 in your project's gradle.properties file.

于 2018-10-03T05:25:05.240 回答
2

Proguard 在 Android Studio 上得到很好的支持。您必须配置 Gradle 才能运行它。说明:http ://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard

于 2013-06-25T05:57:23.803 回答
0

将minifyEnabled设置为 true 后 ,您可以获得两个版本的 apk,因此您必须在build.gradle中添加调试选项以混淆调试一个:

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
    debug {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

同步、构建和构建 apk

于 2021-03-04T16:17:41.347 回答