【问题标题】:How to disable Proguard settings for an external dependency jar?如何禁用外部依赖 jar 的 Proguard 设置?
【发布时间】:2026-01-22 22:40:01
【问题描述】:

我的项目包含 2 个模块 - 一个应用程序和一个库。反过来,该库包含(通过“编译”)另一个 jar(其类也直接在应用程序中引用)。

问题:

  1. 我应该如何将 Proguard 配置为在应用程序、库上而不是在包含的 jar 上运行?
  2. 我应该在 build.gradle 中为库添加任何 proguard 设置吗?
  3. 我应该在应用的 build.gradle 中添加与 jar 相关的任何内容吗?

目前,这是我在应用程序中拥有的:

    buildTypes {
      release {
        debuggable false
        zipAlign true
        runProguard true
        proguardFile 'proguard-rules.txt'
        proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
        signingConfig signingConfigs.release

【问题讨论】:

    标签: gradle proguard android-gradle-plugin


    【解决方案1】:
    1. 目前无法在运行 ProGuard 时排除依赖项。

    2. 如果你想混淆它的一部分,你应该只保护库。仅当您只想将其中的一部分作为公共 API 提供时,这才真正有用。你绝对不想删除死代码,因为你不知道什么会被使用。

    3. 在应用程序方面,您可能不需要添加任何特殊内容,除非库代码要求您不要混淆某些特定类。如果是这种情况,您实际上应该从库中发布它,以便应用程序自动使用它。有一个名为libProguardConsumerFiles 的示例显示了如何使用consumerProguardFiles 属性执行此操作。这将在库包装中包含一个 proguard 规则文件,该文件将被使用该库的任何人使用。

    【讨论】:

    • 谢谢。这很有帮助。我更新了问题。你能再检查一下吗?另外,proguard-android-optimize 是否包含 proguard-android?