Android Gradle-应用安装后如何运行任务

时间:2019-11-29 13:42:38

标签: android android-gradle-plugin gradle-task

通过Gradle安装应用程序后,我需要将一些文件复制到Android App文件夹(数据/数据/ ...)。 必须在启动应用程序之前在每个调试版本中完成此操作,因此我假设我可以找到一个可以在安装后执行(但在运行之前)执行的gradle任务命令)。

在执行类似的操作时,它对于其他任务也可以正常工作

tasks.whenTaskAdded { task ->
    if (task.name == 'build') {
         task.dependsOn taskXYZ
    }
}

然后在执行我的构建任务之前执行它们。 但是,由于我需要在安装过程之后(以及应用程序运行之前)进行此操作,所以我希望这样的事情:

tasks.whenTaskAdded { task ->
    if (task.name.startsWith('install')){
       println ">>>>>>>>> " + task.name
       task.finalizedBy taskXYZ
    }

但可悲的是,这行不通。

在构建输出中,我可以看到它在一开始就执行了。

Executing tasks: [:app:assemblePlayStoreStagingDebug] in project /Users/...

> Configure project :app
###########################
TASK XYZ WAS EXECUTED HERE!
###########################
---> installPlayStoreStagingDebug

> Task :app:preBuild UP-TO-DATE
> Task :app:prePlayStoreStagingDebugBuild
> Task :app:compilePlayStoreStagingDebugAidl UP-TO-DATE
...
> Task :app:stripPlayStoreStagingDebugDebugSymbols UP-TO-DATE
> Task :app:packagePlayStoreStagingDebug
> Task :app:assemblePlayStoreStagingDebug

BUILD SUCCESSFUL in 6s
33 actionable tasks: 6 executed, 27 up-to-date

任务似乎没有在预期的时间执行。我需要的是这样的:

  1. 任务构建
  2. 任务安装
  3. 任务XYZ
  4. 任务运行应用

但是我该如何实现呢?

像这样的解决方案 Android run Gradle task after app install 似乎不适合安装任务。

-----编辑-----

我尝试了另一种方法-而不是使用gradle任务-我尝试通过在“启动前”设置中添加“外部工具”调用来更改AS的运行配置。

https://developer.android.com/studio/run/rundebugconfig#definingbefore

但是,当在其中选择一个shell脚本时,该脚本将不会执行(例如,我正在该脚本中创建文件或目录,因此我可以查看它是否已完全执行)。似乎不是error = 13权限问题。因此,如果gradle任务不是解决方案,那么也许任何人都知道使用此选项的解决方案!

1 个答案:

答案 0 :(得分:1)

在gradle中,您可以使用mustRunAfter任务,这不会在任务之间创建依赖关系,而是会强制一个任务位于构建序列中其他任务的列表之后。

一个例子:

task taskY { 
    mustRunAfter "taskX" 
}

https://gradle.github.io/kotlin-dsl-docs/api/org.gradle.api/-task/must-run-after.html