在做android的apk的二次打包工作中会经常使用到aapt,下面做个简单的随笔吧

  • appt(Android Asset Packaging Tool)是android sdk 里面的一个资源编译工具,AS打包生成apk过程中就使用了aapt,另外使用apktool进行decode和build也用到了aap
  • 在我们反编译一个apk后如果修改了AndroidManifest.xml中manifest元素的package属性后,我们需要重新联合res目录、AndroidManifest.xml、android.jar文件来生重新成R.jar文件,再通过dx.jar以及baksmali.jar最终生成R.samli、R$id.samli...,然后替换掉母包中使用到的老的R类或R$xxx引用,就能保证我们新构建的apk正常运行,否则可能报资源ID找不到的异常
  • 在android的sdk目录下的build-tools下能找到一个appt.exe文件,如图所示:
  • 接下来我们可以使用cmd命令生成R.java文件,首先我们要准备一个apk(母包),然后使用apktool命令(示例:apktool d  7.apk -f --only-main-classes )将其反编译出来得到一个目录,apktool的详细使用可参考CSDNhttps://mp.csdn.net/mp_blog/creation/editor/123645083
  • 如下是反编译后的目录,我们将使用这个目录来生成我们的R.java文件
  • 接下来在母包目录下新建一个gen目录,为了方便我们使用命令,可以将aapt.exe以及android.jar 都拷贝到与apktool.jar同级的目录,如果不在同目录下,文件路径必须是绝对路径;然后执行命令aapt p -f -m -J G:\workspace\apktool\7\gen -S G:\workspace\apktool\7\res -I G:\workspace\apktool\android.jar -M G:\workspace\apktool\7\AndroidManifest.xml,可以看到已经生成了我们想要的R.java文件 
  • p 编译生成R.java文件
  • -f 如果编译出 来的文件已经存在,强制覆盖。
  • -m 使生成的 包的目录放在-J参数指定的目录。
  • -J 指定生成 的R.Java的输出目录
  • -S res文 件夹路径
  • -A assert文 件夹的路径
  • -M AndroidManifest.xml的路径
  • -I 某个版本平台的android.jar的路径
  • -F 具体指定apk文件的输出

aapt 命令生成 R文件相关推荐

  1. Android 个人学习笔记- 导入android项目,无法自动生成R文件的解决方法

    2019独角兽企业重金招聘Python工程师标准>>> 从网上下载源码导进eclipse后,发现该有的jar包都有以后,就是无法在gen目录下生成R文件. 假如你也遇到这样的问题,你 ...

  2. 命令行下使用javah命令生成.h文件,出现“错误: 无法访问android.app.Activity 找不到android.app.Activity的类文件”的解决方法...

    在学习NDK中,当我在项目的bin/classes目录下使用javah命令生成头文件时,出现了"错误: 无法访问android.app.Activity 找不到android.app.Act ...

  3. 计算机打开光驱的命令,巧:用DOS命令生成光盘文件列表 -电脑资料

    现在用刻录机备份数据已经非常普及,例如笔者就经常将一些常用的软件.游戏.电影及其它文档刻录到光盘中, [被屏蔽广告] 于是笔者想了一个办法,用Excel记录下每张光盘的文件/文件夹列表,当需要查找某个 ...

  4. linux dd flash,用dd命令生成bin文件,而不用拆flash读取文件

    对于linux系统,善用dd命令,可以做到直接生成bin文件,而不用生产拆flash. 1) 读flash,保存成bin文件: ~ $ cat /proc/mtd dev: size erasesiz ...

  5. protoc 命令生成java文件时报错解决方案

    当使用protoc --java_out=./ running_conditions.proto命令通过proto协议文件生成java文件报错如下时 running_conditions.proto: ...

  6. 学习笔记:jmeter-CLI命令生成jtl文件及html文件

    背景:jmeter学习中,CLI:无界面模式 负载测试使用CLI模式,而非GUI模式(GUI模式仅用于创建测试计划和调试脚本) 原因:性能测试多用户并发,消耗资源较高:GUI图像界面本身占用资源,导致 ...

  7. Android无法生成R文件的终极解决办法

    R文件如果在clean项目(Project->Clean)和 Fix Project Properties(如下图): 如果在第一步无法解决的的时候,那可能原因就是资源文件调用的错误,比如资源文 ...

  8. linux命令生成hprof文件,Android平台生成任意进程的hprof文件

    一.知识介绍 1.1 为什么要抓取hprof hprof文件中记录了当前进程内存的使用情况,对于一些难以解决的OOM问题,提取出对应进程的hprof文件可以很好的分析这种问题. 分析hprof的工具 ...

  9. protoc 命令 java_用proto命令生成java文件

    1.下载: https://code.google.com/p/protobuf/downloads/list 下载 protoc-2.5.0-win32,然后解压,配置protoc环境变量 2.cm ...

最新文章

  1. java面试(2)--大数据相关
  2. SSD行业要变天了!因为这种闪存芯片要来
  3. vba sub是什么缩写_这些掌握了,你才敢说自己懂VBA
  4. tf.dynamic_stitch 和  tf.dynamic_partition
  5. Plain text, flat file, 及flat-file database 如何翻译
  6. mysql主从复制超简单,mysql简单主从复制
  7. 小学python还是c_python和c先学哪个
  8. Java反射运行时_java反射获得运行时属性的值
  9. 读书:《从零到百亿-Facebook创业故事》
  10. 实习成长之路——设计模式三:组合与继承有啥关系?为什么说多用组合少用继承?如何选择使用哪种方式?
  11. 【微波】【1】色散关系式与 TEM导波、TE导波、TM导波、混合波区别和特性
  12. 开源项目学习之(二)------iBase4J环境搭建
  13. “Microsoft Internet Explorer”,微软的最后一款IE,以此命名——IE6!
  14. yaml 变量引用_Yaml语法使用
  15. 一万年太久只争朝夕:从灯泡的寿命谈截尾样本的基础知识
  16. (已更新)成语小秀才小程序V2.0.14完整安装包+小程序前端
  17. 【经验分享】突然我的SM.MS的图床没法访问了(内附解决方法)
  18. 【程设作业】魔兽世界三:开战
  19. 基因组水平以及转录组水平研究技术
  20. XDOJ 133-一元稀疏多项式计算器

热门文章

  1. USB转串口设备linux随笔
  2. Boke and Tsukkomi——一般图匹配+带花树算法
  3. 发光二极管串电阻阻值计算
  4. 英文歌曲:big big world(大世界)
  5. 如何让div靠右_div向右偏移设置 css让div靠右移一定距离
  6. 面向过程与面向对象概述
  7. win10无法上网,连网显示黄色三角形探号
  8. 数组实现环形队列——Java随解
  9. ado的mysql参数化_ADO参数化(VBA)
  10. 南京大学软件分析第九节——Pointer Analysis - Foundations I