12

我的项目 build.gradle 如下所示:

android { 
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "..."
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile project(':androKnife')
}

我的androKnife模块确实有它自己的 proguard 文件。我怎样才能让我的主项目也使用这个文件?

如果我编译一个项目,是否有某种方法可以自动合并所有模块的所有 proguard 文件?模块是否可以通过另一种方式指定它的 proguard 规则并且项目可以继承它?

4

2 回答 2

25

解决方案是将以下行添加到库中build.gradleconsumerProguardFiles 'proguard-rules.pro'

所以我的 androKnife 库如下所示:

apply plugin: 'com.android.library'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            consumerProguardFiles 'proguard-rules.pro'
        }
    }
}

dependencies {

    ...
}
于 2015-06-15T12:48:28.383 回答
0

因此,主模块proguard代码如下所示:

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

谁知道的内在关系的原理proguardFiles?具有相同的 proguard 代码时自动合并或覆盖?

于 2015-12-28T06:49:00.973 回答