如何准备proguard文件以及其中包含哪些内容?

问题描述 投票:0回答:2

我正在 Android Studio 中开发一个应用程序,我想将 proguard 添加到我的应用程序中。但我不知道该怎么办?我也想了解它的背景。谁能告诉我一些东西吗?谢谢。

android gradle functional-programming android-gradle-plugin android-proguard
2个回答
5
投票

在你的 gradle 文件中将

true
设置为
minifyEnabled

您可以定义是否在调试、发布或两者中启用混淆器

buildTypes {
        release {
            minifyEnabled true
            proguardFiles 'proguard-rules.pro'
        }
        debug {
            minifyEnabled false
            proguardFiles 'proguard-rules.pro'
        }
    }

您还可以设置 proguardFiles 来配置它,检查此 site 查看有关它的文档,看这个示例:

# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /Users/balysv/Documents/Android/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
#   http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
#   public *;
#}

-optimizationpasses 5
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose

如果您想使用自定义字典进行代码混淆,请使用您的字典文件设置此配置:

-obfuscationdictionary proguard-dic.txt
-classobfuscationdictionary proguard-dic.txt
-packageobfuscationdictionary proguard-dic.txt

字典文件是一个简单的文本文件,其中包含您要用来混淆代码的标签,每行 1 个标签。


4
投票

为了使您的 APK 文件尽可能小,您应该启用收缩以删除发布版本中未使用的代码和资源。

代码收缩可通过 ProGuard 实现,它可以检测并删除打包应用程序中未使用的类、字段、方法和属性,包括包含的代码库中的类、字段、方法和属性(使其成为解决 64k 引用限制的宝贵工具)。

ProGuard 还优化字节码,删除未使用的代码指令,并用短名称混淆剩余的类、字段和方法。混淆的代码使您的 APK 难以进行逆向工程,当您的应用程序使用安全敏感功能(例如许可验证)时,这一点尤其有价值。

例如,build.gradle 文件中的以下代码片段支持发布版本的代码缩减:

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

来自 Android Studio 的 Proguard 使用示例

© www.soinside.com 2019 - 2024. All rights reserved.