Ant调试和ant发布失败

时间:2015-06-12 11:02:35

标签: java android eclipse ant compilation

我正在尝试使用ant在命令行上生成apk。我能够使用ant clean但是对于ant debug和ant release命令我遇到了以下错误。

  

建立失败

     

C:\ Android \ sdk \ tools \ ant \ build.xml:649:执行此行时发生以下错误:       C:\ Android \ sdk \ tools \ ant \ build.xml:694:执行失败:java.io.IOException:无法运行程序" C:\ Workspace \ SampleApp \ $ {aapt}":CreateProcess错误= 2,Th       e系统找不到指定的文件               在java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)               在java.lang.Runtime.exec(Runtime.java:617)               在org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Jav)       a13CommandLauncher.java:58)...

在线build.xml:存在694 proguardFile="${out.absolute.dir}/proguard.txt">行。我正在使用Eclipse Juno并且构建目标是22(Lollipop)。 任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:9)

将android SDK更新为最新的构建工具后,我遇到了同样的错误。

tools \ ant \ build.xml脚本不包含对工具的任何引用。

这可以通过将工具添加到build.xml并指向正确的路径来解决。对我来说这是build-tools \ 22.0.1

请比较并更新build.xml中的工具部分

<!-- tools location -->
<property name="android.tools.dir" location="${sdk.dir}/tools" />
<property name="android.platform.tools.dir" location="${sdk.dir}/platform-tools" />
<property name="android.buildtools.dir" location="${sdk.dir}/build-tools/22.0.1" />
<condition property="exe" value=".exe" else=""><os family="windows" /></condition>
<condition property="bat" value=".bat" else=""><os family="windows" /></condition>
<property name="adb" location="${android.platform.tools.dir}/adb${exe}" />
<property name="lint" location="${android.tools.dir}/lint${bat}" />
<property name="zipalign" location="${android.buildtools.dir}/zipalign${exe}" />
<property name="aidl" location="${android.platform.tools.dir}/aidl${exe}" />
<property name="aapt" location="${android.buildtools.dir}/aapt${exe}" />
<property name="dx" location="${android.buildtools.dir}/dx${bat}" />
<property name="renderscript" location="${android.buildtools.dir}/llvm-rs-cc${exe}"/>
<property name="lint" location="${android.tools.dir}/lint${bat}" />

谢谢Alex的小费!

答案 1 :(得分:2)

此位Cannot run program "C:\Workspace\SampleApp\${aapt}"表示编译器尚未翻译变量${aapt}

检查构建脚本中之前是否已定义${aapt}。尝试在触发错误的行之前立即打印出${aapt}的值(例如<echo>aapt variable: ${aapt}</echo>),以检查构建是否已正确编译变量。

答案 2 :(得分:2)

将android sdk工具更新为24.3.3

答案 3 :(得分:0)

确保proguard.config指向project.properties

中现有的proguard文件
proguard.config=proguard-project.txt