如何从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
中包含它,以便我可以指定哪个ant目标需要为每个buildType进行编译。在我的所有谷歌搜索中,我能找到的所有参考资料都是在命令行进行编译。
更新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
我应该注意,从命令行执行时,添加上面的依赖示例确实有效。然而,我的最终目标是能够使用gradle文件同步项目"在Android Studio中并且compile-android
ant目标编译。也许这是不可能的?
答案 0 :(得分:0)
假设您的任务不是要独立于所有其他处理,那么您将希望您的任务依赖于其他任务,这意味着当您尝试运行其他任务时,您的任务将是先执行。例如,该任务可能是“构建”,因此您可能会执行以下操作:
project.build.dependsOn("compile-android")
(我不确定这个的确切语法。)
答案 1 :(得分:0)
好的,看起来这个问题让我误解了“ Sync Project with Gradle ”按钮正在做什么。它不等于从命令行执行构建。直到我实际点击Android Studio中的运行按钮才执行compile-android
任务。点击运行按钮就等同于命令行。