【发布时间】:2013-10-06 16:52:45
【问题描述】:
我想在我的 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 clean 或gradlew build 返回以下错误:
> Could not find method buildTypes() for arguments [build_25r1m0a3etn5cudtt5odlegprd$_run_closure2_closure10@5f3306ad] on project
插件android-library 似乎缺少buildTypes 方法。如果我将apply plugin 更改为android,gradlew 将成功运行。但是,这是一个图书馆项目,我想保留它。我的gradle.build(此处未提及)的其他部分依赖于作为库的项目。
有什么方法可以让android-library 插件在构建时运行 ProGuard?
【问题讨论】:
-
我认为这个想法是为构成最终应用程序的所有代码运行一次 ProGuard,而不是单独为每个库运行一次。
-
我正在创建一个用于分发的 SDK jar。我希望公共函数可见,但私有变量和函数不可见。
标签: android gradle proguard android-library android-gradle-plugin