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环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。