6

我想在我的 Android 库的发布版本上运行 ProGuard。以下是我build.gradle的项目中的文件。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android-library'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 18
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java'
            }
            resources {
                srcDir 'src/../lib'
            }
        }
    }

    buildTypes {
        release {
            runProguard true
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }
    }
}

运行gradlew cleangradlew build返回以下错误:

> Could not find method buildTypes() for arguments [build_25r1m0a3etn5cudtt5odlegprd$_run_closure2_closure10@5f3306ad] on project

插件似乎android-library缺少该buildTypes方法。如果我更改apply pluginandroidgradlew则运行成功。但是,这是一个图书馆项目,我想保留它。我的其他部分gradle.build(此处未提及)依赖于作为库的项目。

有什么方法可以让android-library插件在构建时运行 ProGuard?

4

1 回答 1

2

通过像这样解决我release的问题:buildTypes

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'android-library'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 18
    }

    sourceSets {
        main {
            java {
                srcDir 'src/main/java'
            }
            resources {
                srcDir 'src/../lib'
            }
        }
    }

    release {
        runProguard true
        proguardFile getDefaultProguardFile('proguard-android.txt')
        proguardFile 'proguard-android.txt'
    }
}

另请注意,我proguardFilerelease. 这解决了我在解决最初的问题后遇到的另一个buildTypes问题。

于 2013-09-30T18:42:23.277 回答