2016-02-24 2 views
1

В моем проекте я хочу запустить свою пользовательскую задачу «MyTask» для запуска до удаления. Код для тех жеНе удалось найти свойство 'uninstallDebug' по проекту

uninstallDebug.dependsOn "MyTask"

Когда я запускаю это, он терпит неудачу с ошибкой

Could not find property 'uninstallDebug' on project

тогда, я вижу Gradle задачи, перечисленную в окне Gradle с этим именем. Что может быть не так?

ответ

0
project.afterEvaluate { p -> 
    p.tasks.uninstallDebug.doFirst { 
     println 'before uninstall' 
    } 
} 
+0

Я понимаю вашу точку зрения. Но здесь я хочу, чтобы «uninstallDebug» был зависимым от «yourTask». Поэтому я не могу использовать ваш ответ, так как «uninstallDebug» не является моей задачей. Кроме того, '' uninstallDebug ".dependsOn yourTask' не будет работать. Btw, ссылка, которую вы поделили, не работает. – Rajkiran

+0

Извините, я неверно разобрал ваш вопрос. Отредактированный ответ. –

+0

По-прежнему я не смогу запустить свою задачу из этого кода. Кроме того, я пробовал ваш код, он не печатает строку. Я хочу полностью запустить интеграционные тесты и создать отчет. Для этого я хочу использовать 'uninstallDebug.dependsOn runIntegrationTests' – Rajkiran

0
gradle.taskGraph.whenReady { 
    // if your MyTask is in the same project 
    uninstallDebug.dependsOn "MyTask" 
    // if it is else where 
    uninstallDebug.dependsOn project("someProject").project("subProject).tasks["MyTask"] 
} 
+0

Я попробовал 'whenReady', который приводит к * Не удалось найти свойство 'spoonFreeAndroidDebugTest' в проекте ': app' *. Ниже приведен фрагмент кода: 'gradle.taskGraph.whenReady {taskGraph -> taskGraph. if (taskGraph.hasTask (spoonFreeDebugAndroidTest)) {spoonFreeAndroidDebugTest.finalizedBy "ciIntegrationTests"}} ' – Rajkiran

0

uninstallDebug наряду с несколькими другими задачами, особенно те, которые имеют аромат или имя buildType в их названии созданы и добавлены к Gradle taskGraph довольно поздно на этапе конфигурации с помощью андроида плагина. Это означает, что, как вы обнаружили, вы не можете ссылаться на них по имени на ранней стадии конфигурации, так как они еще не существуют.

Путь вокруг этого, поскольку другие ответы указывают на то, чтобы подождать, пока задачи, о которых идет речь, не будут добавлены на целевую страницу. Вы можете использовать свою линию uninstallDebug.dependsOn "MyTask" либо в gradle.taskgraph.whenRead{}, либо project.afterEvaluate {}

+0

Я пробовал' whenReady', что приводит к * Не удалось найти свойство 'spoonFreeAndroidDebugTest' в проекте ': app' *. Ниже приведен фрагмент кода: 'gradle.taskGraph.whenReady {taskGraph -> taskGraph. if (taskGraph.hasTask (spoonFreeDebugAndroidTest)) {spoonFreeAndroidDebugTest.finalizedBy "ciIntegrationTests"}} ' – Rajkiran

Смежные вопросы