Cannot run program "/android-sdk-linux/aapt.exe": error=2, 没有那个文件或目录

在用ant编译打包android的apk文件时报错:Execute failed: java.io.IOException: Cannot run program "/android-sdk-linux/aapt.exe": error=2, 没有那个文件或目录
首先,确定环境变量没有问题,谷歌之
解决:由于系统为Ubuntu 64位系统,而aapt工具需要32位库的支持才能运行
因此执行:sudo apt-get install ia32-libs   安装32位库


安装好后仍不行,依然是这个报错,细想了下,linux系统没有exe这样的后缀,而build.xml是Windows上复制的,需要修改
<condition property="exe" value=".exe" else=""><os family="windows" /></condition>
<condition property="bat" value=".bat" else=""><os family="windows" /></condition>

<property name="aapt" value="${android_platform-tools}/aapt${exe}" />  
<property name="aidl" value="${android_platform-tools}/aidl${exe}" />  
<property name="dx" value="${android_platform-tools}/dx${bat}" />  
<property name="apk-builder" value="${android-tools}/apkbuilder${bat}" /> 
<property name="proguard-home" value="${android-tools}/proguard/lib"/> 
将build.xml做如上修改,根据不同平台做个判断,当在Windows系统中时,tools下的工具均带有exe、bat后缀,否则则为空,不带后缀。


在linux中终于不报错了,但在jenkins中构建时仍然报这个错
原因在于构建时,使用SVN上传到服务器中的代码中Linux中并不是使用的root用户权限,而是另一个用户的权限,当ant打包时会产生一些新的文件,而这些文件是root权限的
导致在编译过程中出现跨用户。
解决:在配置环境变量时确保不同用户均可以找到aapt,尽量让jenkins下的工作空间处于同一用户下,注意不同文件的文件权限。
#echo $ANDROID_HOME
#echo $JAVA_HOME
#echo $PATH                     //查看当前用户环境变量

引自:http://blog.csdn.net/hunterno4/article/details/8920368

猜你喜欢

转载自java-linkin.iteye.com/blog/2024937