最近先把業余的ROR放一放,手頭上有些工作要處理。以前在windows中獲取過apk信息,最近打算在Linux獲取apk信息,使工作更加智能化。
之前看《The linux command line》的時候以為了解一些基本指令就可以了,可事實上當你要用到這個系統的時候,需要的不止這些。後面要回去學習下腳本。
現在的當務之急是先把aapt跑出來。
下載工具包,沒梯子的自己下載到這個包後再自己傳到服務器吧。
$ wget http://android-apktool.googlecode.com/files/apktool-install-linux-r04-brut1.tar.bz2
解壓縮
$ tar -jxvf apktool-install-linux-r04-brut1.tar.bz2
移動文件
$ mv aapt /usr/bin
$ mv apktool /usr/bin
輸入aapt命令,控制台輸出
-bash: /usr/bin/aapt: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
原因是64位系統中安裝了32位程序,apktool是32位。
那我自己也需要清楚我的機子裝的是linux哪個版本還有位數。
$ cat /etc/issue
CentOS release ,可以知道是CentOS發行版
$ file /sbin/init
/sbin/init: ELF 64-bit LSB shared object, x86-64,為64位。
32-bit即為32位。
剛開始安裝我是參考這個來的:http://michaelzqm.iteye.com/blog/1881576
$ yum install -y glibc-2.12-1.107.el6.i686
本來照著裝這個,卻報了這樣的錯誤。
No package glibc-2.12-1.107.el6.i686 available.
網上搜了一下,換了個版本的包。
$ yum install -y glibc-2.12-1.166.el6.i686
感覺上一個鏈接寫的介紹有點坑,所以按照另外一個進行安裝:
http://www.aichengxu.com/view/25283,centos 64位linux系統下安裝appt命令的apktool工具包的筆記
此時執行
$ aapt
-bash: /usr/bin/aapt: /lib/ld-linux.so.2: bad ELF interpreter: 沒有那個文件或目錄
安裝包
$ yum install glibc.i686
安裝完後,繼續執行
$ aapt
aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
繼續安裝包
$ yum install zlib.i686
安裝完後,繼續執行
$ aapt
aapt: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
繼續安裝包
$ sudo yum install libstdc++.i686
問題出現了:
安裝過程中報錯:
Error: Protected multilib versions: libstdc++-4.4.7-16.el6.i686 != libstdc++-4.4.7-11.el6.x86_64
進行更新,注意更新的版本是將上面的.i686部分更新為x86_64
$yum update libstdc++-4.4.7-16.el6.x86_64
$aapt
aapt: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
回到原來的那步:
$ yum install libstdc++.i686
這次安裝成功。
aapt正常執行
$ aapt
Android Asset Packaging Tool
Usage:
aapt l[ist] [-v] [-a] file.{zip,jar,apk}
問題應該是包的版本和位數問題,雖然不是太了解,但是照著那個思路,根據控制台的輸出版本還有網上有的版本,修改一下還是可以調通的。
網上一篇文章抄來抄去,一字不改,也不注明原出處,也是亂。