Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在build.gradle中执行Ant目标任务?_Android_Ant_Gradle_Build.gradle - Fatal编程技术网

Android 如何在build.gradle中执行Ant目标任务?

Android 如何在build.gradle中执行Ant目标任务?,android,ant,gradle,build.gradle,Android,Ant,Gradle,Build.gradle,如何从build.gradle文件中获取与Ant目标关联的任务以执行 build.gradle中导入build.xml文件的部分: def targetSdk = android.defaultConfig.targetSdkVersion.getApiLevel() ant.properties['android.version'] = "android-$targetSdk" ant.properties['sdk-location'] = SDK_DIR ant.importBuild(r

如何从
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目标名为
compileandroid
。它通过以下命令行成功运行:

./gradlew compile-android
但是我想在
build.gradle
中包含这一点,这样我就可以为每种构建类型指定需要编译的ant目标。在我所有的谷歌搜索中,我所能找到的所有参考就是让它在命令行编译

更新1

我尝试将
compileandroid
任务作为一个依赖项添加到另一个随着构建过程执行的任务中。虽然从概念上讲,这两个概念实际上是相互独立的。这仍然无法执行
编译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


我应该注意,添加上面的依赖项示例在从命令行执行时确实有效。然而,我在这里的最终目标是能够在androidstudio中点击“用gradle文件同步项目”,并让
编译Android
ant目标编译。也许这是不可能的?

假设您的任务不打算独立于所有其他处理,您希望您的任务由其他任务依赖,这意味着当您尝试运行其他任务时,您的任务将首先执行。例如,该任务可能是“构建”,因此您可以执行以下操作:

project.build.dependsOn("compile-android")

(我不确定这个的确切语法。)

好的,看来问题是我对“与Gradle同步项目”按钮所做的工作的误解。它并不等同于从命令行执行生成。直到我在androidstudio中点击run按钮,它才执行编译Android的任务。因为点击run按钮相当于命令行。

在构建过程中,我确实执行了一些其他任务。我尝试在其中一个上附加
compileandroid
dependsOn
,但它仍然无法构建。已使用尝试使用的代码更新问题。您已将其反转。你需要“编译android”来依赖你的任务,而不是反过来,假设你需要在“编译android”之前执行你的任务。仍然不起作用。用我的尝试更新了我的答案。请注意,不管是先执行任务还是先“编译android”,从构建脚本中手动执行任务都没有意义。您必须从命令行运行的任务开始,并在此基础上管理您的依赖关系。在构建脚本中执行任务的优点可能与此问题有所不同,但我希望您提供任何链接来解释这一点。我对格拉德尔还是新手。然而,我假设它和提供依赖项没有什么不同,比如编译这个模块,编译这个AAR,或者编译这个jar。