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.youkuaiyun.com/hunterno4/article/details/8920368

### 设置 `android.aapt2FromMavenOverride` 实验性选项 当配置 Android 构建工具时,有时开发者可能希望指定自定义路径给 AAPT2 工具。AAPT2 (Android Asset Packaging Tool 2) 是用于处理资源文件的核心组件之一,在构建过程中起着重要作用[^1]。 为了实现这一点,可以通过设置 `android.aapt2FromMavenOverride` 属性指向本地磁盘上的特定版本的 `aapt2.exe` 文件位置。然而需要注意的是,此功能属于实验性质,并不是所有情况下都能正常工作。具体操作如下: #### 修改 gradle.properties 者项目级别的 build.gradle 文件 可以在项目的根目录下的 `gradle.properties` 文件中添加以下行来启用该特性: ```properties android.enableAapt2=true android.aapt2FromMavenOverride=/path/to/aapt2.exe ``` 者也可以通过修改模块级的 `build.gradle` 来完成相同的操作: ```groovy android { ... defaultConfig { ... } // 启用 experimental 功能并覆盖默认的 aapt2 路径 packagingOptions { pickFirst 'lib/x86_64-linux-gnu/libstdc++.so.6' } tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } dexOptions { javaMaxHeapSize "4g" } lintOptions { abortOnError false } testOptions { unitTests.returnDefaultValues = true } bundle { aapt2FromMavenOverride '/path/to/aapt2.exe' // 自定义 aapt2 路径 } } ``` 值得注意的是,由于这是一个实验性的属性,因此可能会存在兼容性和稳定性方面的问题。建议仅在必要的情况下使用,并密切监控其行为以确保不会影响应用程序的质量和性能[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值