是否有任何混淆工具可与Android Studio一起使用?IntelliGuard 插件被声明为Studio 支持,但由于缺少 AntSupport 插件,它实际上不起作用。我无法在存储库中找到一个。有任何想法吗?
PS Android Studio 构建过程基于 Gradle,所以我根本不希望看到 Ant 支持。也许我错了。
是否有任何混淆工具可与Android Studio一起使用?IntelliGuard 插件被声明为Studio 支持,但由于缺少 AntSupport 插件,它实际上不起作用。我无法在存储库中找到一个。有任何想法吗?
PS Android Studio 构建过程基于 Gradle,所以我根本不希望看到 Ant 支持。也许我错了。
要在 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 文件
首先minifyEnabled
在你的 build.gradle 文件中启用,比如
minifyEnabled true
在此之后,在 progurad-rules.txt 文件中添加以下行
-keep class yourpackage.** { *; }
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
要检查其工作正常,请访问:
http://www.javadecompilers.com/apktool网站,以便您可以在反编译后进行验证。
它会起作用,您的课程将完全隐藏。
更新: 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收缩器和混淆工具。
对于低于 3.4.0 的 AS 版本。
gradle.properties
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
最低要求:
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.
Proguard 在 Android Studio 上得到很好的支持。您必须配置 Gradle 才能运行它。说明:http ://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard
将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