build.gradle中的选择性模块编译

时间:2015-11-30 14:24:39

标签: android android-studio gradle android-gradle build.gradle

有没有办法按口味选择性地编译模块?

我正在尝试通过在运行debug flavor时不编译各种模块来减少开发中的构建时间。

在Eclipse中,我不会将它们放在libs文件夹中,而是将它们放在addon-libs中,并仅在导出时(通过gradle构建脚本)编译它们,并且在代码中有类似的东西这样:

try {
   if(Class.forName(clazz) {
      doStuffForLib();
   }
} catch (ClassNotFoundException ex) {
   // DO NOTHING
}

我的问题是,我现在可以在build.gradle中做类似的事情并减少构建时间吗?

即,我会写这样的东西

buildTypes {
   debug{
   }

   release {
      compile 'some.module:version:1.+'
   }
}

2 个答案:

答案 0 :(得分:1)

您可以使用。或

来使用flavor或buildTypes来实现它
dependencies {
    flavor1Compile xxx
    debugCompile xxxx
}

答案 1 :(得分:1)

搜索后我发现this JIRA ticket解决了我的问题。

您可以为每个版本提供编译,并为其他人使用provided依赖关系任务,同时维护所提供的代码,以避免使用未在其不存在时编译的模块< / p>

public boolean isClassFound(String clazz) {
    try {
        return Class.forName(clazz);
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    return false
}

build.gradle添加:

dependencies {
    provided 'some.module:version:1.+'
    releaseCompile 'some.module:version:1.+'
}