
[英]How to control the task execute order in Android studio's build.gradle?
[英]How to execute an Ant target task in build.gradle?
如何从build.gradle
文件中获取与Ant目标关联的任务以执行?
build.gradle
用于导入build.xm
l文件的部分:
def targetSdk = android.defaultConfig.targetSdkVersion.getApiLevel()
ant.properties['android.version'] = "android-$targetSdk"
ant.properties['sdk-location'] = SDK_DIR
ant.importBuild(rootDir.absolutePath + "/bcproj/build.xml")
我要执行的ant目标名为compile-android
。 它可以通过以下命令在命令行成功运行:
./gradlew compile-android
但我想在build.gradle
包括它,以便我可以指定需要为每个buildType编译哪个ant目标。 在我的所有谷歌搜索中,我所能找到的参考就是在命令行中对其进行编译。
更新1
我尝试将compile-android
任务添加为与构建过程一起执行的另一个任务的依赖项。 尽管从概念上讲,两者实际上是彼此独立的。 这仍然无法使compile-android
执行。
task copyShopMetadata(type: Exec, dependsOn: 'compile-android') {
workingDir rootDir
commandLine './copy_shop_metadata.sh'
}
copyShopMetadata.execute()
我试着扭转依赖关系,但仍然无法正常工作。
Task t = tasks.findByName('compile-android')
t.dependsOn(copyShopMetadata)
copyShopMetadata.execute()
更新2
我应该注意,从命令行执行时,添加上面的依赖示例确实有用。 但是,我的最终目标是能够在Android Studio中命中“与gradle文件同步项目”并具有compile-android
ant目标。 也许这是不可能的?
假设您的任务并非旨在独立于所有其他处理,那么您将希望您的任务被其他任务所依赖,这意味着当您尝试运行该其他任务时,将首先执行该任务。 例如,该任务可能是“ build”,因此您可以执行以下操作:
project.build.dependsOn("compile-android")
(我不确定确切的语法。)
好的,问题似乎是我对“ 使用Gradle同步项目 ”按钮在做什么方面的误解。 这不等同于从命令行执行构建。 直到我真正按下Android Studio中的运行按钮,它才执行compile-android
任务。 按下运行按钮相当于命令行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.