2017-02-13 9 views
0

私のapp.gradleには多くの味があります。私がexecするときgradlew assembleRelease私はapp/build/intermediates/classesのディレクトリにすべての味のクラスを見つけることができます。今、私はクラスを生成した後にクラスを修正したい(私の仕事をする)。どうやってやるの?すべてのフレーバーを変更する.class in gradle

私のタスク名はmです。

gradle.projectsEvaluated { 
    def buildTypes = android.buildTypes.collect { type -> type.name } 
    def productFlavors = android.productFlavors.collect { flavor -> flavor.name } 
    // When no product flavors defined, use empty 
    if (!productFlavors) { 
     productFlavors.add('') 
    } 
    productFlavors.each { productFlavorName -> 
     buildTypes.each { buildTypeName -> 
      def flavorNameCapitalized = "${productFlavorName.capitalize()}" 
      def buildNameCapitalized = "${buildTypeName.capitalize()}" 
      def targetName = "${flavorNameCapitalized}${buildNameCapitalized}" 
      def preTaskName = "compile${targetName}JavaWithJavac" 
      def nextTaskName = "compile${targetName}Ndk" 
      if (!isDebug(buildNameCapitalized.toString())) { 
        project.tasks.findByName("generate${targetName}Sources").doLast { //generate${targetName}Sources 
        println("projectsEvaluated flavorName: " + flavorNameCapitalized.toString()) 
        println("projectsEvaluated buildName: " + buildNameCapitalized.toString()) 
        project.ext.set("flavorName", flavorNameCapitalized.toString()); 
        project.ext.set("buildName", buildNameCapitalized.toString()); 
       } 
       m.dependsOn project.tasks.findByName(preTaskName) 
       project.tasks.findByName(nextTaskName).dependsOn m 
      } 
     } 
    } 
} 

しかし、私のタスクは1回だけ実行されます。私は動的なタスクで解決、最終的には

答えて

0

を助ける

String newTaskName = "${targetName}m"; 
task "$newTaskName"() << { 
    ... 
} 
def newTask = project.tasks.findByName("$newTaskName") 
newTask.dependsOn project.tasks.findByName(preTaskName) 
project.tasks.findByName(nextTaskName).dependsOn newTaskName 
関連する問題