You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Objection修补Android APK时重建失败的问题求助

Objection执行patchapk时APK重建失败的解决方法

核心错误原因

  • 资源文件名违反Android规范:所有带$符号的资源文件不符合aapt要求的命名规则(仅允许[a-z0-9_.]),这是导致重建失败的直接原因
  • 次要警告:apktool自带的aapt_64无法提取,默认使用PATH中的aapt版本,该警告不影响重建,可忽略或后续优化

解决步骤

1. 保留反编译文件并修改违规文件名

执行patchapk时添加--no-clean参数,保留反编译后的临时文件:

objection patchapk --source your_app.apk --no-clean

找到输出中提示的反编译临时目录(类似/tmp/tmpXXXXXX.apktemp),进入res目录,重命名所有违规文件:

  • 将drawable/$avd_hide_password__*.xml改为drawable/avd_hide_password__*.xml
  • 将drawable/$avd_show_password__*.xml改为drawable/avd_show_password__*.xml
  • 将drawable-v24/$ic_launcher_foreground__0.xml改为drawable-v24/ic_launcher_foreground__0.xml

2. 手动重新打包并签名

进入反编译的临时目录,执行apktool打包:

apktool b -o patched_app.apk

使用调试密钥签名(默认Android调试密钥路径为~/.android/debug.keystore,密码为android):

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore patched_app.apk androiddebugkey

可选:用zipalign优化APK对齐:

zipalign -v 4 patched_app.apk aligned_patched_app.apk

3. 优化apktool的aapt配置(可选)

若想解决aapt_64无法提取的警告,可下载与apktool版本匹配的aapt_64二进制文件,创建/prebuilt/linux/目录并放入该文件,或修改apktool配置文件指定系统PATH中的aapt路径。

内容的提问来源于stack exchange,提问作者Wodorek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 20:43:11