aapt 命令生成 R文件

在做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文件的输出

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值