第一步:如何快速找把手机里面的apk文件本地
如果我们不知道apk的包名,我们先打开需要的apk,然后再打开终端,输入下面命令获取这个apk的包名
adb shell dumpsys activity
查看当前apk的包名,有了包名,然后我们可以快快速获取apk,参照我的另外一篇文章: http://www.linuxdiyf.com/linux/22760.html(Android之如何ubuntu环境下在手机里面快速找到apk的位置然后拉下来 )
第二步:配置环境
在ubuntu 上输入
gedit /etc/profile
然后配置
export PATH=/home/chenyu/Android_dev/sdk/build_tools/23.0.2:$PATH
这里是我的路径,你的话根据你的实际来配置
配置之后,加载下
source /etc/profile
然后再用下面命令查看 是否配置成功
echo $PATH
第三步:输入aapt查看信息
然后我查看的是SafeCenter.apk
输入以下命令
aapt d badging SafeCenter.apk
然后效果如下:
这不apk 名字就知道了,apk的名字叫 “手机管家”
第四步:总结其它的相关信息
1.列出apk包的内容
aapt l[ist] [-v] [-a] file.{zip,jar,apk}
-v 以table形式列出来
-a 详细列出内容
例如:aapt l <你的apk文件>,这个命令就是查看apk内容
2.查看apk一些信息
aapt d[ump] [--values] WHAT file.{apk} [asset [asset ...]]
badging Print the label and icon for the app declared in APK
permissions Print the permissions from the APK.
resources Print the resource table from the APK.
configurations Print the configurations in the APK.
xmltree Print the compiled xmls in the given assets.
xmlstrings Print the strings of the given compiled xml assets.
例如:aapt d permissions <apk文件>, 这个就是显示这个apk所具有的权限
3.编译android资源
aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] /
[-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] /
[--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] /
[--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] /
[--rename-manifest-package PACKAGE] /
[--rename-instrumentation-target-package PACKAGE] /
[--utf16] [--auto-add-overlay] /
[--max-res-version VAL] /
[-I base-package [-I base-package ...]] /
[-A asset-source-dir] [-G class-list-file] [-P public-definitions-file] /
[-S resource-sources [-S resource-sources ...]] [-F apk-file] [-J R-file-dir] /
[--product product1,product2,...] /
[raw-files-dir [raw-files-dir] ...]
这个比较复杂,只解释几个关键参数。
-f 如果编译出来的文件已经存在,强制覆盖。
-m 使生成的包的目录放在-J参数指定的目录。
-J 指定生成的R.Java的输出目录
-S res文件夹路径
-A assert文件夹的路径
-M AndroidManifest.xml的路径
-I 某个版本平台的android.jar的路径
-F 具体指定apk文件的输出
例如:
一.将工程的资源编译R.java文件
aapt package -m -J <R.java目录> -S <res目录> -I <android.jar目录> -M <AndroidManifest.xml目录>
二.将工程的资源编译编译到一个包里
aapt package -f -S <res目录> -I <android.jar目录> -A<assert目录> -M <AndroidManifest.xml目录> -F <输出的包目录>
4.打包好的apk中移除文件
aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]
例如:aapt r <你的apk文件> AndroidManifest.xml, 这个就是将apk中的AndroidManifest移除掉
5.添加文件到打包好的apk中
aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]
例如:aapt a <你的apk文件> <要添加的文件路径>, 这个就是将文件添加到打包好的apk文件中
6.显示aapt的版本
aapt v[ersion]
例如:aapt v, 就是打印这个结果 Android Asset Packaging Tool, v0.2