有没有可以与Android Studio一起使用的混淆工具?IntelliGuard插件被声称支持Studio,但实际上由于缺失AntSupport插件而无法使用。我在存储库中也找不到任何工具。你有什么想法吗?
附注:Android Studio的构建过程是基于Gradle构建的,所以我不会指望在那里看到Ant支持。也许我错了。
有没有可以与Android Studio一起使用的混淆工具?IntelliGuard插件被声称支持Studio,但实际上由于缺失AntSupport插件而无法使用。我在存储库中也找不到任何工具。你有什么想法吗?
附注: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文件
proguard.cfg
。尝试反编译apk,类没有混淆,是否需要将.cfg
重命名为.pro
? - mboy首先在您的 build.gradle 文件中启用 minifyEnabled
,例如:
minifyEnabled true
在此之后,将以下行添加到progurad-rules.txt文件中。
-keep class yourpackage.** { *; }
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
检查是否正常工作,请访问:http://www.javadecompilers.com/apktool网站,以便在反编译后进行验证。
它将正常工作,并且您的类将完全隐藏。
更新:在Android Studio 3.4.0及以上版本中,默认启用了R8
在Android Studio 3.4+中,默认启用了R8,因此无需添加其他属性,但您可以通过在gradle.properties
中添加fullMode
属性来选择深度优化,如下所示:
android.enableR8.fullMode=true
您可以通过在gradle.properties
中添加以下属性来禁用R8并启用proguard
:
android.enableR8 = false
useProguard = true
2018年9月,Android发布了一个新的工具R8收缩器和混淆器。
适用于AS版本3.4.0以下。
gradle.properties
android.enableR8 = true
as
# 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没有删除的代码。所以,在这种不太可能的情况下,您可能需要添加额外的规则以保留该代码。
禁用AS 3.4.0及以上版本中的R8:
# Disables R8 for Android Library modules only.
android.enableR8.libraries = false
# Disables R8 for all modules.
android.enableR8 = false
minifyEnabled true
,在构建输出中你会看到一个任务 Task :app:minifyReleaseWithR8,现在你不需要手动去做它了,让我们来处理所有这些... 谢谢... - Maifee Ul AsadProguard在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'
}
}