aapt 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

aapt 命令安装:


  1. -bash: aapt: command not found
  2.  
  3. #Windows
  4. 1. 找到本机上aapt工具的安装路径(或 aapt2)
  5. /Users/CommandNotFound/android-sdk/build-tools/28.0.3/aapt
  6.  
  7. 2. 切换目录到/usr/local/bin,将aapt复制到该目录下
  8. /Users/CommandNotFound/android-sdk/build-tools/28.0.3/aapt /usr/local/bin
  9.  
  10. 3. 运行aapt成功
  11. $ aapt v
  12. Android Asset Packaging Tool, v0.2-5747142
  13.  
  14. --------------------------
  15. #Debian
  16. apt-get install aapt
  17.  
  18. #Ubuntu
  19. apt-get install aapt
  20.  
  21. #Kali Linux
  22. apt-get install aapt
  23.  
  24. #Raspbian
  25. apt-get install aapt

aapt 命令语法:


  1. aapt l[ist] [-v] [-a] <你的应用>
  2.  
  3. -v table形式列出来
  4. -a 详细列出内容
  5.  
  6. #例如:aapt l <你的apk文件>,这个命令就是查看apk内容

aapt(APKTool)扩展阅读:


aapt 命令选项和参数:


提示:由于我们工作中需要使用badging参数来查看versioncode,因此可以使用命令aapt dump badging | findstr “versionCode”来查看

选项 说明 例子
badging 查看apk包的packageName、versionCode、applicationLabel、launcherActivity、permission等各种详细信息 aapt dump badging file_path.apk
permissions 查看apk包的权限信息 aapt dump permissions file_path.apk
resources 查看资源列表 aapt dump resources file_path.apk >1.txt
configurations 查看apk配置信息 aapt dump configurations file_path.apk
xmltree 以树形结构输出的xml信息。 aapt dump xmltree file_path.apk res/***.xml
xmlstrings 查看指定apk的指定xml文件。 aapt xmlstrings resources file_path.apk res/***.xml
  1. aapt d[ump] [--values] WHAT file.{apk} [asset [asset ...]]
  2. #例如:aapt d permissions <apk文件>, 这个就是显示这个apk所具有的权限
  3.  
  4.  
  5. #android 编译资源打包资源文件的命令
  6. aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroidManifest.xml] \
  7. [-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \
  8. [--debug-mode] [--min-sdk-version VAL] [--target-sdk-version VAL] \
  9. [--app-version VAL] [--app-version-name TEXT] [--custom-package VAL] \
  10. [--rename-manifest-package PACKAGE] \
  11. [--rename-instrumentation-target-package PACKAGE] \
  12. [--utf16] [--auto-add-overlay] \
  13. [--max-res-version VAL] \
  14. [-I base-package [-I base-package ...]] \
  15. [-A asset-source-dir] [-G class-list-file] [-P public-definitions-file] \
  16. [-D main-dex-class-list-file] \
  17. [-S resource-sources [-S resource-sources ...]] \
  18. [-F apk-file] [-J R-file-dir] \
  19. [--product product1,product2,...] \
  20. [-c CONFIGS] [--preferred-density DENSITY] \
  21. [--split CONFIGS [--split CONFIGS]] \
  22. [--feature-of package [--feature-after package]] \
  23. [raw-files-dir [raw-files-dir] ...] \
  24. [--output-text-symbols DIR]
  25.  
  26. -d:包括一个或多个设备资源,由逗号分隔;
  27. -f:覆盖现有的文件命令,加上后编译生成直接覆盖目前已经存在的R.java;
  28. -m:使生成的包的目录放在-J参数指定的目录;
  29. -u:更新现有的包 u = update;
  30. -v:详细输出,加上此命令会在控制台输出每一个资源文件信息,R.java生成后还有注释。
  31. -x:创建扩展资源ID;
  32. -z:需要本地化的资源属性标记定位。
  33. -M:AndroidManifest.xml的路径
  34. -0:指定一个额外的扩展. apk文件将不会存储压缩
  35. -g:制定像素迫使图形的灰度
  36. -j:指定包含一个jarzip文件包,这个命令很特别
  37. debug-mode:指定的是调试模式下的编译资源;
  38. min-sdk-versopm VAL:最小SDK版本 如是7以上 则默认编译资源的格式是 utf-8
  39. target-sdk-version VAL:在androidMainfest中的目标编译SDK版本
  40. app-version VAL:应用程序版本号
  41. app-version-name TEXT:应该程序版本名字;
  42. custom-package VAL:生成R.java到一个不同的包
  43. rename-mainifest-package PACKAGE:修改APK包名的选项;
  44. rename-instrumentation-target-package PACKAGE:重写指定包名的选项;
  45. utf16:资源编码修改为更改默认utf 16编码;
  46. auto-add-overlay:自动添加资源覆盖
  47. max-res-version:最大资源版本
  48. -I:指定的SDK版本中android.jar的路径
  49. -A:assert文件夹的路径
  50. -G:一个文件输出混淆器选项,后面加文件逗号隔开.
  51. -P:指定的输出公共资源,可以指定一个文件 让资源ID输出到那上面;
  52. -S:指定资源目录 一般是 res
  53. -F:指定把资源输出到 apk文件中
  54. -J:指定R.java输出的路径
  55. raw-file-dir:附加打包进APK的文件

aapt 命令实例:


常用:查看APK的信息

  1. [root@dsp_web_95 09]$aapt d badging Z5GoecB71543801820973OhhMig9T.apk
  2. package: name='com.tansuotv.vcgame' versionCode='20406' versionName='2.4.6'
  3. sdkVersion:'17'
  4. targetSdkVersion:'21'
  5. uses-permission:'android.permission.ACCESS_DOWNLOAD_MANAGER'
  6. uses-permission:'android.permission.ACCESS_WIFI_STATE'
  7. uses-permission:'android.permission.CHANGE_WIFI_STATE'
  8. uses-permission:'android.permission.INTERNET'
  9. uses-permission:'android.permission.ACCESS_NETWORK_STATE'
  10. uses-permission:'android.permission.KILL_BACKGROUND_PROCESSES'
  11. uses-permission:'android.permission.WRITE_EXTERNAL_STORAGE'
  12. uses-permission:'android.permission.READ_EXTERNAL_STORAGE'
  13. uses-permission:'android.permission.MOUNT_UNMOUNT_FILESYSTEMS'
  14. uses-permission:'android.permission.DOWNLOAD_WITHOUT_NOTIFICATION'
  15. uses-permission:'android.permission.READ_PHONE_STATE'
  16. uses-permission:'android.permission.ACCESS_COARSE_LOCATION'
  17. application: label='家嬉兔游戏' icon='res/mipmap-xhdpi-v4/icon_launch200.png'
  18. launchable activity name='com.tansuotv.vcgame.activity.SplashActivity'label='' icon=''
  19. uses-feature:'android.hardware.location'
  20. uses-feature:'android.hardware.location.network'
  21. uses-feature:'android.hardware.wifi'
  22. uses-feature:'android.hardware.touchscreen'
  23. main
  24. other-activities
  25. other-receivers
  26. other-services
  27. supports-screens: 'small' 'normal' 'large' 'xlarge'
  28. supports-any-density: 'true'
  29. locales: '--_--' 'ca' 'da' 'fa' 'ja' 'nb' 'de' 'af' 'bg' 'th' 'fi' 'hi' 'vi' 'sk' 'uk' 'el'
  30. 'nl' 'pl' 'sl' 'tl' 'am' 'in' 'ko' 'ro' 'ar' 'fr' 'hr' 'sr' 'tr' 'cs' 'es' 'it' 'lt' 'pt'
  31. 'hu' 'ru' 'zu' 'lv' 'sv' 'iw' 'sw' 'fr_CA' 'lo_LA' 'en_GB' 'bn_BD' 'et_EE' 'ka_GE' 'ky_KG'
  32. 'km_KH' 'zh_HK' 'si_LK' 'mk_MK' 'ur_PK' 'sq_AL' 'hy_AM' 'my_MM' 'zh_CN' 'pa_IN' 'ta_IN'
  33. 'te_IN' 'ml_IN' 'en_IN' 'kn_IN' 'mr_IN' 'gu_IN' 'mn_MN' 'ne_NP' 'pt_BR' 'gl_ES' 'eu_ES'
  34. 'is_IS' 'es_US' 'pt_PT' 'en_AU' 'zh_TW' 'ms_MY' 'az_AZ' 'kk_KZ' 'uz_UZ'
  35. densities: '160' '240' '320' '480' '640'
  36. native-code: 'armeabi'

打包好的apk中移除文件

  1. #aapt r[emove] [-v] file.{zip,jar,apk} file1 [file2 ...]
  2. #例如:这个就是将apk中的AndroidManifest移除掉
  3.  
  4. aapt r {你的apk文件} AndroidManifest.xml

添加文件到打包好的apk中

  1. #aapt a[dd] [-v] file.{zip,jar,apk} file1 [file2 ...]
  2. #例如:这个就是将文件添加到打包好的apk文件中
  3.  
  4. aapt a {你的apk文件} {要添加的文件路径}

显示aapt的版本

  1. #aapt v[ersion]
  2.  
  3. [root@Dev ~]$aapt v
  4. Android Asset Packaging Tool, v0.2

aapt 命令的坑:


在 Windows 上执行 aapt 命令的小伙伴,可能有时候发现出来的结果是乱码?其实是 Windows 下的命令窗口默认是采用非UTF-8编码的,有时候运行一些UTF-8编写的批处理文件在控制台中的输出就是乱码..

解决办法
CHCP 设置编码,这是MD DOS中的命令,用来显示或设置活动代码页编号的。用法是:

  1. CHCP [num]
  2. #其中num指定的是代码页的编号。
  3. #这个参数是可选的,如果,在默认的cmd窗口中,我们只输入chcp,
  4. 显示的将类似活动的代码页: 936

以下是几种常用的编码:

  1. 936 GBK(一般情况下为默认编码)
  2. 437 美国英语
  3. 65001 utf-8

  1. #要设置CMD窗口编码格式为UTF-8,运行cmd,输入下面命令:
  2.  
  3. chcp 65001

aapt/aapt2 扩展阅读:




aapt 命令评论

共收录到 521Linux 命令