aapt即Android Asset Packaging Tool,在SDK的build-tools目錄下。該工具可以查看,創建, 更新ZIP格式的文檔附件(zip, jar, apk)。也可將資源文件編譯成二進制文件,盡管你可能沒有直接使用過aapt工具,但是build scripts和IDE插件會使用這個工具打包apk文件構成一個Android 應用程序。
centos6版本因為需要glibc-2.14 , 現附上最簡單的方法(想研究可以看后面的方法)
下載后解壓直接使用aapt獲取包名
[root@iZuf62o440hd7ir1f41ahdZ data]# pwd #放在哪里隨便 /data [root@iZuf62o440hd7ir1f41ahdZ data]# tar xf android.tar.gz [root@iZuf62o440hd7ir1f41ahdZ data]# cd android [root@VM_0_15_centos android]# ll total 9924 -rwxr-xr-x 1 root root 1425363 Nov 14 11:24 aapt -rw-r--r-- 1 root root 8709717 Jun 30 2017 ldsmobilemgr.apk # 測試包( 魯大師的apk ) drwxr-xr-x 2 root root 4096 Nov 14 11:52 lib64 [root@iZuf62o440hd7ir1f41ahdZ android]# pwd /data/android [root@VM_0_15_centos android]# tail -1 /etc/profile export PATH=$PATH:/data/android #把這個路徑加上,然后 . 或者 source /etc/profile 一下 [root@VM_0_15_centos android]# aapt l -a ldsmobilemgr.apk | grep "name="|awk -F= 'NR==1{print $4}' com.ludashi.appstore [root@VM_0_15_centos android]# cd [root@VM_0_15_centos ~]# aapt l -a /data/android/ldsmobilemgr.apk | grep "name="|awk -F= 'NR==1{print $4}' com.ludashi.appstore [root@VM_0_15_centos ~]# # OK,可以了. 這個方法最好的地方就是不用給系統加 glibc-2.14 加了后可能會時間不准,文件亂碼
下面內容可忽略, 想看也不攔着
apktool和aapt各種版本可以到如下地址下載
http://connortumbleson.com/apktool/
https://ibotpeaches.github.io/Apktool/
本次操作環境centos 以apktool 2.2.2為例
下載工具包:
wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
wget http://connortumbleson.com/apktool/apktool_2.2.2.jar
wget http://connortumbleson.com/apktool/aapt/linux/aapt
配置加權
[root@local leinw]# mkdir -p /usr/local/aapt [root@local leinw]# mv aapt apktool apktool_2.2.2.jar /usr/local/aapt/ [root@local leinw]# cd /usr/local/aapt/ [root@local aapt]# chmod +x ./* # 添加到PATH 修改 vim /etc/profile, 把路徑添加上 export PATH=$PATH:/usr/local/aapt [root@local aapt]# . /etc/profile 或者用 source /etc/profile
獲取包名
[root@local wu]# aapt dump badging BS_HBag_S_HDV2.6.4.938.apk|grep "package" | awk -F "'" '{print $2}' #或者 aapt l -a /wu/BS_HBag_S_HDV2.7.0.998.apk| grep "name="|awk -F= 'NR==1{print $4}' aapt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by aapt)
報錯了, 剛才centos7沒報, centos6報了. 缺少 GLIBC_2.14
[root@local wu]# strings /lib64/libc.so.6 |grep GLIBC_ GLIBC_2.2.5 GLIBC_2.2.6 GLIBC_2.3 GLIBC_2.3.2 GLIBC_2.3.3 GLIBC_2.3.4 GLIBC_2.4 GLIBC_2.5 GLIBC_2.6 GLIBC_2.7 GLIBC_2.8 GLIBC_2.9 GLIBC_2.10 GLIBC_2.11 GLIBC_2.12 GLIBC_PRIVATE [root@local wu]# rpm -qa|grep glibc glibc-headers-2.12-1.209.el6_9.2.x86_64 glibc-devel-2.12-1.209.el6_9.2.x86_64 glibc-2.12-1.209.el6_9.2.x86_64 glibc-common-2.12-1.209.el6_9.2.x86_64
下載編譯安裝glibc-2.14
[root@local wu]# wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz [root@local wu]# tar xf glibc-2.14.tar.gz [root@local wu]# cd glibc-2.14 [root@local glibc-2.14]# mkdir build [root@local glibc-2.14]# cd build [root@local build]# ../configure --prefix=/opt/glibc-2.14 #檢查是否有問題,沒問題往下,有問題要解決 [root@local build]# make # (4核可加-j4 ,8核可加-j8),不加也行 [root@local build]# make install # 檢查編譯日志有無報錯
觀察編譯日志有無報錯。可能提示少文件.
touch {glibc2.14解壓路徑}/etc/ld.so.conf (報什么沒有,創建什么文件 mkdir /opt/glibc-2.14/etc/ld.so.conf 我創建的目錄也可以,呵呵 )
重新 make install , 不報錯了再往下進行....
配置修改
[root@wu build]# \cp -rf /etc/ld.so.c* /opt/glibc-2.14/
[root@wu build]# ln -sf /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6
[root@wu build]# strings /lib64/libc.so.6 | grep GLIBC GLIBC_2.2.5 GLIBC_2.2.6 GLIBC_2.3 GLIBC_2.3.2 GLIBC_2.3.3 GLIBC_2.3.4 GLIBC_2.4 GLIBC_2.5 GLIBC_2.6 GLIBC_2.7 GLIBC_2.8 GLIBC_2.9 GLIBC_2.10 GLIBC_2.11 GLIBC_2.12 GLIBC_2.13 GLIBC_2.14 GLIBC_PRIVATE
再次查看包名
[root@wu build]# aapt l -a /wu/BS_HBag_S_HDV2.7.0.998.apk| grep "name="|awk -F= 'NR==1{print $4}' com.bszhihui.hbag_launcher [root@wu build]# aapt d badging /wu/BS_HBag_S_HDV2.7.0.998.apk |grep "package" | awk -F "'" '{print $2}' com.bszhihui.hbag_launcher
注意
如果升級失敗導致大部分系統工具失效,可用下面命令重裝libc.so.6
如果先刪除軟鏈接再創建, 刪除libc.so.6
之后可能導致系統命令不可用的情況, 可使用如下方法解決:
LD_PRELOAD=/opt/glibc-2.14/lib/libc-2.14.so ln -s /opt/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6
如果上述更新失敗可使用如下命令還原:
LD_PRELOAD=/lib64/libc-2.12.so ln -s /lib64/libc-2.12.so /lib64/libc.so.6 // libc-2.12.so ###此項是系統升級前的版本
附加
LD_LIBRARY_PATH是Linux環境變量名,該環境變量主要用於指定查找共享庫(動態鏈接庫)時除了默認路徑之外的其他路徑。