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

时间:2014-03-25 00:31:32

标签: gradle proguard android-gradle

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

问题:

  1. 我应该如何配置Proguard在应用程序上运行,而不是在包含的jar上运行?
  2. 我应该在build.gradle中为库设置任何proguard设置吗?
  3. 我应该在build.gradle中为应用程序添加jar吗?
  4. 目前,这是我在应用程序中的内容:

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

1 个答案:

答案 0 :(得分:2)

  1. 目前无法在运行ProGuard时排除依赖关系。

  2. 如果要对库的一部分进行模糊处理,则只应该对库进行编程。如果您只想将其中的一部分作为公共API提供,那么这非常有用。你明确地不想删除死代码,因为你不知道会使用什么。

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