Execute failed: java.io.IOException: Cannot run program "sdk-linux/build-tools/22.0.0/aapt": error=2,cannotrunprogram

來源:互聯網
上載者:User

Execute failed: java.io.IOException: Cannot run program "sdk-linux/build-tools/22.0.0/aapt": error=2,cannotrunprogram

在Linux上使用ant編譯打包apk的時候,出現下面的錯誤及解決方案:

1、/usr/local/android-sdk-linux/tools/ant/build.xml:698: Execute failed: java.io.IOException: Cannot run program "/usr/local/android-sdk-linux/build-tools/22.0.0/aapt": error=2, No such file or directory

BUILD FAILED/svcroot/workspace/build/MobileAppAndorid/build.xml:94: The following error occurred while executing this line:/usr/local/android-sdk-linux/tools/ant/build.xml:653: The following error occurred while executing this line:/usr/local/android-sdk-linux/tools/ant/build.xml:698: Execute failed: java.io.IOException: Cannot run program "/usr/local/android-sdk-linux/build-tools/22.0.0/aapt": error=2, No such file or directoryat java.lang.ProcessBuilder.start(ProcessBuilder.java:1041)at java.lang.Runtime.exec(Runtime.java:617)at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:428)at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:442)at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:628)at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:669)at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:495)at com.android.ant.AaptExecTask.execute(AaptExecTask.java:699)at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)at org.apache.tools.ant.Task.perform(Task.java:348)at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)at com.android.ant.IfElseTask.execute(IfElseTask.java:120)at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)at org.apache.tools.ant.Task.perform(Task.java:348)at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)at org.apache.tools.ant.Task.perform(Task.java:348)at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396)at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)at org.apache.tools.ant.Task.perform(Task.java:348)at org.apache.tools.ant.Target.execute(Target.java:435)at org.apache.tools.ant.Target.performTasks(Target.java:456)at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)at org.apache.tools.ant.Project.executeTargets(Project.java:1248)at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:606)at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)at org.apache.tools.ant.Task.perform(Task.java:348)at org.apache.tools.ant.Target.execute(Target.java:435)at org.apache.tools.ant.Target.performTasks(Target.java:456)at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)at org.apache.tools.ant.Project.executeTarget(Project.java:1364)at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)at org.apache.tools.ant.Project.executeTargets(Project.java:1248)at org.apache.tools.ant.Main.runBuild(Main.java:851)at org.apache.tools.ant.Main.startAnt(Main.java:235)at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)Caused by: java.io.IOException: error=2, No such file or directoryat java.lang.UNIXProcess.forkAndExec(Native Method)at java.lang.UNIXProcess.<init>(UNIXProcess.java:135)at java.lang.ProcessImpl.start(ProcessImpl.java:130)at java.lang.ProcessBuilder.start(ProcessBuilder.java:1022)... 59 more

原因:在64位Linux下打包成APK時缺少x86下C++語言庫。

解決: 
# yum install -y compat-libstdc++-296.i686 
# yum install -y compat-libstdc++-33.i686

2、/usr/local/android-sdk-linux/build-tools/20.0.0/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

-code-gen:[mergemanifest] Found modified input file[mergemanifest] Merging AndroidManifest files into one.[mergemanifest] Manifest merger disabled. Using project manifest only.     [echo] Handling aidl files...     [aidl] No AIDL files to compile.     [echo] ----------     [echo] Handling RenderScript files...     [echo] ----------     [echo] Handling Resources...     [aapt] Generating resource IDs...     [aapt] /usr/local/android-sdk-linux/build-tools/20.0.0/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directoryBUILD FAILED/svcroot/workspace/build-app/MobileAppAndorid/build.xml:94: The following error occurred while executing this line:/usr/local/android-sdk-linux/tools/ant/build.xml:653: The following error occurred while executing this line:/usr/local/android-sdk-linux/tools/ant/build.xml:698: null returned: 127

解決: 
# yum install -y zlib

(yum配置可以參考文章 http://blog.csdn.net/catoop/article/details/41345471 我用的是RHEL 6.5版本的Linux)


3、[aapt] /android/sdk/build-tools/android-4.4/aapt: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory 
-code-gen: [mergemanifest] Merging AndroidManifest files into one. [mergemanifest] Manifest merger disabled. Using project manifest only.      [echo] Handling aidl files...      [aidl] No AIDL files to compile.      [echo] ----------      [echo] Handling RenderScript files...      [echo] ----------      [echo] Handling Resources...      [aapt] Generating resource IDs...      [aapt] /android/sdk/build-tools/android-4.4/aapt: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory 

原因:在64位Linux下打包成APK時缺少x86下C++語言庫。

解決: 
# yum install -y libstdc++.so.6

如果2、3的問題還沒有解決,使用下面的命令試試:
# yum install glibc*.i686# yum install zlib*.i686# yum install libstdc++.so.6




---------------

(完)







著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.