Ant构建失败。

3
我正在尝试使用命令行通过Apache Ant构建一个 Android 项目,但是它给我返回了构建失败并显示以下错误信息:
Java.io.IOException: Cannot run Program. "..\android_sdk\platform-tools\aapt.exe"

D:\MediaSync\build.xml:429: Execute failed: java.io.IOException: Cannot run program "..\android_sdk\platform-tools\aapt.exe"

我对此不甚了解,因此不知如何解决此问题。虽然我已经查找了许多相关信息,但仍然束手无策..
如果您有任何想法,请告诉我。

编辑:这是我的Buil.xml文件的部分内容。

<!-- General SDK location -->
<property name="sdk-folder" value="D:/sdk" />  

<!-- Preset tools location -->
<property name="android-platform-tools" value="${sdk-folder}/platform-tools"/> 

 <!-- Tools -->
<condition property="aapt" value="${android-platform-tools}/aapt.exe" else="${android-platform-tools}/aapt" >
    <os family="windows"/>
</condition>  


<!-- Generate the R.java file for this project's resources. -->
<target name="resource-src" depends="init, localization, replace-template-values">
    <echo>Generating R.java / Manifest.java from the resources...</echo>
    <exec executable="${aapt}" failonerror="true">
        <arg value="package" />
        <arg value="-m" />
        <arg value="-J" />
        <arg value="${outdir-r}" />
        <arg value="-M" />
        <arg value="${outdir.manifest}/AndroidManifest.xml" />
        <arg value="-S" />
        <arg value="${resource-dir}" />
        <arg value="-I" />
        <arg value="${android-jar}" />
    </exec>

</target>

你找到解决问题的方法了吗? - Amritpal Singh
@AmritpalSingh.. 我实际上不记得我那时候做了什么。你可以尝试以下答案。 - Noman
5个回答

3

请确保aapt.exe已经安装在正确的路径下,相对于您的build.xml文件(../android_sdk/platform-tools)。这个路径可能是相对于您的项目而言的,但并不是相对于build.xml文件。


appt.exe 正确地位于 platform-tools 文件夹中。我的 Android SDK 放置在 C 盘中。因此,aapt.exe 的完整路径如下: C:\android-sdk-windows\sdk\platform-tools\aapt.exe\。但是仍然无法构建项目。 - Noman
为避免混淆,您也可以使用绝对路径。 - javadeveloper
@javadeveloper,我该如何使用它?能否请您给我展示一个例子? - Noman

3

@yangxu... 感谢您的回复... 我已经编译了代码... 我的问题是项目安装指南不是最新的。 - Noman

1

在Intellij Android Studio和其他IDE中存在一个错误,会将某些可执行文件/库指向platform-tools,而这些文件现在位于build-tools中。目前的解决方法是创建必要文件的符号链接。

因此,在Linux/Mac上:

platform-tools$ ln -s ../build-tools/android-version-blah/bin/appt appt

and

platform-tools$ ln -s ../build-tools/android-version-blah/lib lib

对于 Windows 系统,安装 LinkExtensions 并用 mklink 替换 ln 命令,然后通过输入 mklink 命令查看帮助。在 Windows 系统中,文件名为 appt.exe。


1
您的错误消息如下:

D:\MediaSync\build.xml:429: 执行失败: java.io.IOException: 无法运行程序 "..\android_sdk\platform-tools\aapt.exe"

而您的aapt.exe位于:

C:\android-sdk-windows\sdk\platform-tools\aapt.exe\

显然,build.xml 尝试在 D:\ 中搜索 android_sdk\platform-tools\aapt.exe,这是错误的路径。

应该有一个属性让您指定 aapt.exe 的路径,或者它从系统的 PATH 变量中读取。

要获得解决方案,请发布 build.xml 中第 429 行周围的行。在第 429 行中,应该有一个 <exec> 任务,请确保包括该任务的整个内容(从 <exec ...> 复制到 </exec>)。


@coolcfan..我已经在系统变量中设置了“Platform-tools”文件夹和“Tools”的正确路径,并在Build.properties中提到了SDK的正确路径... 如果我在Build.xml文件中设置Android SDK的绝对路径,那么构建仍然会失败... - Noman
@Noman,${aapt}的值是多少?它是一个属性,请检查您的build.xml和properties文件中的"aapt"。此外,您可以使用<echo><exec>之前添加一个echo行来输出${aapt}的值。 - Dante WWWW
@coolcfan... 它的值就在你面前。而且它是正确的,这个东西没有问题。 - Noman
@coolcfan...谢谢您的回复...我已经编译了代码...我的问题是项目安装指南不是最新的。 - Noman

0
一个快速的解决方法是将aapt.exe和lib文件夹从build-tools复制到platform-tools文件夹中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接