Proguard - 同样使用来自模块的Proguard文件

14

我的项目 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规则和项目可以继承的方法?

2个回答

27

解决方法是在libraries的build.gradle文件中添加以下行:consumerProguardFiles '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 {

    ...
}

0

所以,主模块proguard代码如下:

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

谁知道proguardFiles的内部关系原理?当具有相同的proguard代码时,它是自动合并还是覆盖?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接