2015-04-01 56 views
0

我在Android Studio中发现了一个奇怪的行为。与Android Studio有关的build.gradle文件中无法访问的几项任务

我想在我的模块build.gradle文件中访问dexDebug任务。

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

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

dexDebug.doFirst { 
    // do some stuff here 
} 

,但我得到以下错误:Error:(rowNumber, 0) Could not find property 'dexDebug' on project ':app'.

这是奇怪,因为我可以通过拨打gradle dexDebug在Android Studio中端这一任务。

这是什么原因?

+0

为什么?你想做什么? 'gradlew dexDebug'与'dexDebug.doFirst'不一样。 – 2015-04-01 14:22:59

+0

我需要在dexDebug任务运行之前做一些处理。 – Herbi 2015-04-01 14:25:59

回答

0

创建自己的任务:

task myTask() { 

} 

dexDebug之前,你的任务 “过程的东西”:

gradle.taskGraph.whenReady { taskGraph -> 

    if (taskGraph.hasTask(dexDebug)) { // <-- check if your task is ready 
     dexDebug.dependsOn myTask // <-- make it depend on your task 
    } 
} 
+1

坦克的男人。其实它不适用于taskGraph的东西。我发现了一个办法做到这一点有以下 'tasks.whenTaskAdded {任务 - > 如果(task.name.equals( 'dexDebug')){ task.dependsOn myTask } }' – Herbi 2015-04-01 15:27:33

+0

好吧,听起来不错! – 2015-04-01 15:32:37

相关问题