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                     //查看當前用戶環境變量
發佈了53 篇原創文章 · 獲贊 11 · 訪問量 62萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章