成功生成apk后运行python脚本

2024-06-16 09:45:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个系统,用户输入后,我调用os.system("./gradlew assembleDebug ")来生成APK。在此之后,定义了一个函数来下载APK,该函数将被调用。这一切在当地环境下都很有效。但是在我的awsec2实例上,前一个调用不是阻塞调用,即使在生成apk的过程中也会调用download apk函数,这显然会失败。我在我的EC3实例上使用ngnix。在

我想在apk成功生成后调用python脚本。在

这是我的生成.gradle文件。在

task generateSources << {
        def script = "python downloadAPK.py".execute()
    }

gradle.projectsEvaluated {
    compileJava.dependsOn(generateSources)
} 

我收到此错误错误:(84,0)在项目app上找不到属性“compileJava”。在

不管怎样,我认为这不会帮助我,因为我不确定这是否会在APK生成之后运行。所以我认为在这里可以做两件事:

  1. 在我的实例上配置ngnix或其他东西,使前一个调用成为阻塞调用。在
  2. 在生成APK之后调用python脚本。可以在assembleDebug命令中执行,并在构建成功后调用python脚本。在

请告诉我哪一个是更好的方法,以及如何去做。在


Tags: 实例函数用户脚本os系统错误system
1条回答
网友
1楼 · 发布于 2024-06-16 09:45:34

这实际上是groovy的一个技巧。GString#execute()默认情况下不阻塞。但是,我们可以通过等待exitValue使其阻塞。在

所以如果你改变了你的代码就可以工作了

task generateSources << {
    def script = "python downloadAPK.py".execute()
}

等待Process结束后再让任务完成

^{pr2}$

然后,当您构建时,只需运行gradlew generateSources,并且由于该任务依赖于先运行的assembleDebug,所以apk将始终在任务运行之前生成。这也可能意味着Process#waitFor是没有意义的,因为它是在生成APK之后执行的

相关问题 更多 >