2016-07-27 1 views
0

Je travaille avec un projet ndk utilisant gradle-experimental. J'ai une bibliothèque «préconstruite» qui est vraiment une bibliothèque que je génère avec un appel de shell dans une tâche gradle. J'essaye de le rendre très facile pour ce projet pour courir dehors de la boîte, ainsi je dois pouvoir exécuter cette buildTask avant les versions de gradle. J'ai regardé dans preBuild.dependsOn ..., mais malheureusement, ce n'est pas pris en charge dans expérimental. Des idées? J'ai actuellement un fichier .sh qui l'exécute, mais j'essaie de m'en sortir. Editer: Ne pas dupliquer car gradle-experimental ne supporte pas preBuild comme je l'ai déjà dit.Comment puis-je obtenir gradle pour exécuter une tâche avant de construire?

+0

double possible de [? Exécuter la tâche avant de construire android gradle] (http://stackoverflow.com/questions/18532415/execute-task-avant-android-gradle-build) –

+0

Sauf que c'est dans gradle-experimental. S'il vous plaît lire les différences et ce que j'ai écrit. – iHowell

Répondre

0

Hypothèses:

  • NDK moduleName est Foo
  • supportées ABI est armeabi
  • Variants sont debug et libérer

Vous devez créer une combinaison pour toutes les variantes et ABI vous avez ajouté aux abiFilters.

Créer une classe RuleSource dans build.gradle

class FooRuleSource extends RuleSource { 

    @Mutate 
    void validatePreCompileFooDebugEnvironmentArmeabi(
     @Path('tasks.compileFooArmeabiDebugSharedLibraryFooMainCpp') Task compileTask) { 
     validateEnvironment(compileTask) 
    } 

    @Mutate 
    void validatePreCompileFooReleaseEnvironmentArmeabi(
     @Path('tasks.compileFooArmeabiReleaseSharedLibraryFooMainCpp') Task compileTask) { 
     validateEnvironment(compileTask) 
    } 

    private void validateEnvironment(compileTask) { 
     compileTask.dependsOn("desiredTask") 
    } 

} 

Créer la tâche dans votre build.gradle:

task desiredTask(type:Exec){ 
    commandLine 'echo', 'hi' 
}