我一直在使用ant来构建我的项目几个月没有问题直到昨天刚出来的r20。我基本上只是使用默认构建文件提供的钩子来做一些小的更改。我的项目正在使用2个库项目,并且构建工作可以从eclipse中正常工作。但是我使用ant做了官方的签名构建(我有创建构建的目标,我的应用程序将连接到生产,登台或qa环境)。 以下是我收到的错误消息:
BUILD FAILED /Users/mwolfe/workspace/android-flex/app/build.xml:99: 执行此行时发生以下错误: /Users/mwolfe/lib/android-sdk/tools/ant/build.xml:476: ../shared/SomeSdk/sdk解析为没有project.properties的路径 项目文件 /用户/ mwolfe /工作区/机器人柔性/共享/ SomeSdk / SDK
但是我确信这个文件夹中有一个project.properties文件,之前这个工作正常。查看build.xml的build.xml中的第476行,它有:
<!-- clean target -->
<target name="clean" depends="-setup, -pre-clean"
description="Removes output files created by other targets.">
<delete dir="${out.absolute.dir}" verbose="${verbose}" />
<delete dir="${gen.absolute.dir}" verbose="${verbose}" />
<!-- if we know about a tested project or libraries, we clean them too. -->
<if condition="${project.is.test}">
<then>
<property name="tested.project.absolute.dir" location="${tested.project.dir}" />
<subant failonerror="true">
<fileset dir="${tested.project.absolute.dir}" includes="build.xml" />
<target name="clean" />
</subant>
</then>
</if>
<!-- get all the libraries -->
<if>
<condition><not><isset property="dont.do.deps" /></not></condition>
<then>
<!-- LINE 476 HERE: --> <getlibpath libraryFolderPathOut="project.library.folder.path" />
<if>
<condition>
<isreference refid="project.library.folder.path" />
</condition>
<then>
<!-- clean the libraries with nodeps since we already
know about all the libraries even the indirect one -->
<subant
buildpathref="project.library.folder.path"
antfile="build.xml"
failonerror="true">
<target name="nodeps" />
<target name="clean" />
</subant>
</then>
</if>
</then>
</if>
</target>
任何想法导致了这个以及如何解决它?
答案 0 :(得分:1)
好吧所以我想出了如何解决它。发生了什么事,无论出于何种原因,当我最初编写自己的蚂蚁脚本时,我有自己的干净目标,我称之为所有子项目的干净目标,如下所示:
<target name="clean" depends="androidbuild.clean">
<exec executable="sh" failonerror="true">
<arg value="${ndk.dir}/ndk-build" />
<arg value="clean" />
</exec>
<!-- remove the next 2 lines to fix the problem -->
<ant target="clean" dir="${android.library.reference.1}" />
<ant target="clean" dir="${android.library.reference.2}" />
</target>
由于某些原因,这不再起作用了,而且看起来新的ant构建脚本android r20仍为我提供处理这个,所以删除上面的2个清除调用修复了问题。
请注意,androidbuild.clean依赖项调用父build.xml的干净目标,该目标在$ ANDROID_SDK / tools / ant / build.xml中定义 导入该脚本时,请执行以下操作:
<import file="${sdk.dir}/tools/ant/build.xml" as="androidbuild" />
这样你就可以引用那个构建文件中的目标了(ps,这也修复了eclipse,认为你的build.xml文件有错误,这样你就不需要将android build.xml复制并粘贴到你自己的文件中了其他人在网上建议)。