从 Gradle 运行 Android 的 build.xml 时,项目“LibA”中不存在目标“$build.target”
Posted
技术标签:
【中文标题】从 Gradle 运行 Android 的 build.xml 时,项目“LibA”中不存在目标“$build.target”【英文标题】:Target "$build.target" does not exist in the project "LibA" when running Android's build.xml from Gradle从 Gradle 运行 Android 的 build.xml 时,项目“LibA”中不存在目标“$build.target” 【发布时间】:2012-01-14 00:01:02 【问题描述】:我有一个依赖于三个 android 库的 Android 项目。它的 project.properties 文件如下所示:
split.density=false
android.library.reference.2=..\\LibB
proguard.config=proguard.cfg
android.library.reference.1=..\\\\LibA\\\\
# Project target.
target=android-5
android.library.reference.3=../LibC
本项目的build.xml仅用于依赖Gradle任务:
<target name="-pre-build" depends="preBuild" />
<target name="-pre-compile" depends="preCompile" />
<import file="$sdk.dir/tools/ant/build.xml" />
build.gradle 以下列方式包含项目的 build.xml:
ant.property(file: 'local.properties')
configurations
sdkDir = ant.properties['sdk.dir']
ant.importBuild "build.xml"
当我使用“发布”目标运行此脚本时,我从 Android 的 build.xml 文件中收到以下错误:
[ERROR] [org.gradle.BuildExceptionReporter] Execution failed for task ':-build-setup'.
[ERROR] [org.gradle.BuildExceptionReporter] Cause: The following error occurred while executing this line:
[ERROR] [org.gradle.BuildExceptionReporter] Target "$build.target" does not exist in the project "LibA".
这是由第 466 行(包含“subant”的行)引起的:
<!-- compile the libraries if any -->
<if>
<condition>
<isreference refid="project.libraries" />
</condition>
<then>
<echo>Building Libraries</echo>
<subant
buildpathref="project.libraries"
antfile="build.xml"
target="$build.target"
failonerror="true"/>
<echo></echo>
<echo>############################################</echo>
<echo>**** Back to project $ant.project.name ****</echo>
<echo>############################################</echo>
</then>
</if>
那么,问题是:有谁知道如何消除该错误或如何在 Gradle 中正确使用 Android 的 build.xml?
Android sdk >= r14 的 Gradle-android-plugin 目前已损坏,因此我已不再依赖它。我使用 sdk 工具 r15。
更新: 好像都没有
<target name="-set-release-mode" depends="-set-mode-check">
也没有
<target name="-set-debug-mode">
在 Android 的 build.xml 文件中被调用,但我不知道为什么。
【问题讨论】:
【参考方案1】:我对这个环境的细节一无所知,但错误消息意味着未定义预期的属性 - build.target
。
我注意到在你的项目属性文件中你有这个:
# Project target.
target=android-5
换成这样可以吗?
# Project target.
build.target=android-5
【讨论】:
感谢您的回复。不幸的是,这种情况并非如此。 project.properties 中的目标是您要定位的 api 版本,但 build.target 是您为主项目运行的 ant 目标,例如。 “发布”。所以当我将它设置为“build.target=release”时它起作用了,但如果我理解得很好,它应该自动完成。【参考方案2】:我遇到了同样的问题并解决了,包括:
build.target=release
在 project.properties 的末尾,按照 Orzech 的建议。
【讨论】:
【参考方案3】:我知道这是一篇旧帖子,但是我仍然会为某人提出这个问题。 build.target(s) 是为 Ant 构建器定义的任何目标。 如果您使用的是 Eclipse,您可以按如下方式定义目标:
菜单->运行->外部工具->外部工具配置->目标
您可以在此处选择由 Ant 构建的实际目标。
请注意,如果没有定义,Eclipse 将强制使用帮助目标。
更多内容请点击此处:http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.platform.doc.user%2Fconcepts%2Fconcepts-exttools.htm
【讨论】:
以上是关于从 Gradle 运行 Android 的 build.xml 时,项目“LibA”中不存在目标“$build.target”的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android Studio 项目中将库添加到 Gradle 构建?
Android Gradle 插件自定义 Gradle 任务 ⑤ ( 为自定义 Gradle 任务添加依赖任务 | Gradle 任务依赖执行顺序控制 )
Android Gradle 插件自定义 Gradle 任务 ⑤ ( 为自定义 Gradle 任务添加依赖任务 | Gradle 任务依赖执行顺序控制 )
Android Gradle 构建中不使用 libs 文件夹中的 Jar 文件
从 Gradle 运行 Android 的 build.xml 时,项目“LibA”中不存在目标“$build.target”