网站首页 > 资源文章 正文
一、通常情况下aapt2构建的apk使用apktool反编译之后,需要再次使用appt2编译和连接资源生成R.java.
所以python打包工具我专门写了个函数:
def get_build_tool_version(apk_path):
# 判断apk是aapt构建还是aapt2构建,是aapt构建的返回1,是aapt2构建的返回2
with zipfile.ZipFile(apk_path, 'r') as apk_file:
manifest_contents = apk_file.read('AndroidManifest.xml').decode('utf-8')
match = re.search(r'android:versionName="\d+(?:\.\d+)*"\s+android:name="android\.support\.version"', manifest_contents)
if match:
version_string = str(match.group())
if 'aapt2' in version_string:
return 2
elif 'aapt' in version_string:
return 1
# Default to aapt
return 1
然后使用上面这个函数判断一个apk是何构建方式,选择不同方式【aapt、aapt2】构建资源出包。
如果aapt出不了aab包只能出apk包, 走v2签名 和对齐文件
如果是aapt2根据出包格式出对应的包,如果是aab只能V1签名,如果是apk是v2签名
二、那么回到主题:aapt2构建的apk反编译之后使用aapt可不可以正常编译出R.java呢
我做了一些尝试
aapt p -f -m -J F:\decode_apk_dir\gen -S F:\decode_apk_dir\res -I D:\pythonLeanHis\king\StangTools\base\android.jar -M F:\decode_apk_dir\AndroidManifest.xml
生成不了R.java.出现如下错误
res\drawable\$avd_hide_password__0.xml: Invalid file name: must contain only [a-z0-9_.]
res\drawable\$avd_hide_password__1.xml: Invalid file name: must contain only [a-z0-9_.]
res\drawable\$avd_hide_password__2.xml: Invalid file name: must contain only [a-z0-9_.]
res\drawable\$avd_show_password__0.xml: Invalid file name: must contain only [a-z0-9_.]
res\drawable\$avd_show_password__1.xml: Invalid file name: must contain only [a-z0-9_.]
res\drawable\$avd_show_password__2.xml: Invalid file name: must contain only [a-z0-9_.]
res\drawable\$ic_launcher_foreground__0.xml: Invalid file name: must contain only [a-z0-9_.]
然后把$ic_launcher_foreground__0.xml等相关的文件删除,把F:\decode_apk_dir\res\values的public.xml下面相关的资源都删除,再次执行
aapt p -f -m -J F:\decode_apk_dir\gen -S F:\decode_apk_dir\res -I D:\pythonLeanHis\king\StangTools\base\android.jar -M F:\decode_apk_dir\AndroidManifest.xml
还是各种错误,后来检查一下想起来会不会是aapt.exe版本太低的原因。我aapt.exe是D:\sdk\build-tools\33.0.0里面复制过来的,apktool.jar版本是2.7.0.我把apktool.jar解压,然后把解压之后prebuilt里面复制对应平台的aapt.exe。复制到工具目录即可。再次运行指令这次一切正常了,不报错可以正常生成R.java了
- 上一篇: 安卓移动应用代码安全加固系统设计及实现
- 下一篇: APP渗透—查脱壳、反编译、重打包签名
猜你喜欢
- 2024-11-01 对一网诈APP的分析(反对网络诈骗)
- 2024-11-01 “耳机中的双子座”是“你的新AI助手”
- 2024-11-01 从编译原理看android的编译文件(安卓编译原理)
- 2024-11-01 分享7个实用的“黑科技”网站,建议赶紧收藏起来!
- 2024-11-01 Android中热修复框架AndFix原理解析及案例使用
- 2024-11-01 2023级网络安全岗面试题及面试经验分享
- 2024-11-01 爬虫中的那些反爬虫措施以及解决方法
- 2024-11-01 Smali语法入门教程(smali基本语法)
- 2024-11-01 ROM制作与修改第五课:apk和odex的介绍和合并
- 2024-11-01 谷歌 Play代码破解:研发反侦测不受信任的追踪功能
你 发表评论:
欢迎- 05-1430个在线地图瓦片URL分享
- 05-1425个在线地图瓦片URL分享
- 05-14PixelStyle for Mac(mac照片编辑器)
- 05-14一篇文章带你了解CSS3 3D 转换知识
- 05-14我们的世界是假的?马斯克:我们生活在高文明模拟的矩阵游戏中
- 05-14【视觉AI的基石】斯坦福大学笔记!带你吃透卷积神经网络 (CNN)
- 05-14潮流 | 通过AAPE的新价目,无虑入荷未来主义服饰
- 05-14身份证查询服务API:准确识别身份证信息
- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)