Gradle 如何禁用外部依赖项jar的Proguard设置?

Gradle 如何禁用外部依赖项jar的Proguard设置?,gradle,proguard,android-gradle-plugin,Gradle,Proguard,Android Gradle Plugin,我的项目由两个模块组成-一个应用程序和一个库。该库反过来包括(通过“编译”)另一个jar(其类也在应用程序中直接引用) 问题: 我应该如何配置Proguard在应用程序、库上运行,而不是在附带的jar上运行 我应该在build.gradle中为库设置任何proguard设置吗 我应该在build.gradle中为应用程序添加与jar相关的内容吗 目前,这是我在应用程序中拥有的: buildTypes { release { debuggable false

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

问题:

  • 我应该如何配置Proguard在应用程序、库上运行,而不是在附带的jar上运行
  • 我应该在build.gradle中为库设置任何proguard设置吗
  • 我应该在build.gradle中为应用程序添加与jar相关的内容吗
  • 目前,这是我在应用程序中拥有的:

        buildTypes {
          release {
            debuggable false
            zipAlign true
            runProguard true
            proguardFile 'proguard-rules.txt'
            proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
            signingConfig signingConfigs.release
    
  • 在运行ProGuard时,目前不可能排除依赖项

  • 如果要混淆库的某些部分,则只应对库进行proguard。只有当您只想将它的一部分作为公共API提供时,这才是真正有用的。您肯定不想删除死代码,因为您不知道哪些代码会被使用或不被使用

  • 在应用程序方面,您可能不需要放置任何特殊的内容,除非库代码要求您不要混淆某些特定的类。如果是这种情况,你应该从库中发布它,这样应用程序就会自动使用它。有一个名为
    libProguardConsumerFiles
    的示例,展示了如何使用
    consumerProguardFiles
    属性来实现这一点。这将在库打包中包括一个proguard规则文件,该文件将由使用库的任何人使用


  • 非常感谢。这很有帮助。我更新了问题。你能再查一下吗?另外,proguard android优化是否包括proguard android?