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

Apktool反编译正常但无法重编译,求APK权限修改及编译修复方案

解决APK重新编译失败问题(删除Manifest权限场景)

问题原因

从编译日志看,失败和你修改AndroidManifest无关,是资源文件解析错误导致的:

  • /res/values/styles.xml第2669行:系统期望枚举类型,但反编译后变成了原始字符串2
  • /res/values/styles.xml第4305行:系统期望维度类型,但反编译后变成了原始字符串-1

这是Apktool对部分特殊格式APK反编译时的兼容性问题,资源值类型被错误转换,导致资源链接阶段失败。

修复步骤

1. 修正styles.xml错误

  • 打开/home/pixel/apk/res/values/styles.xml,定位到第2669行:
    把字符串2替换为对应属性的枚举值,比如如果是android:gravity相关,可参考同文件内同属性的合法值(如center_vertical);若不确定,也可以尝试用@integer/引用或对应枚举的常量名。
  • 定位到第4305行:
    把字符串-1替换为维度类型的合法值,比如match_parent(对应-1的布局常量)或-1dp(如果是尺寸值)。

2. 重新编译

修复后执行编译命令:

apktool b ./

替代工具推荐(仅修改Manifest权限场景)

如果只想删除Manifest里的权限,没必要全量反编译/编译,推荐以下工具:

  • APK Editor Studio:可视化工具,直接加载APK后编辑Manifest,修改后一键打包,无需处理资源编译问题。
  • MT管理器:可通过Wine在Linux Mint运行,支持直接打开APK并编辑内部的AndroidManifest.xml,操作简洁。
  • aapt2命令行工具:
    1. 提取Manifest到文本:
      aapt dump xmltree your.apk AndroidManifest.xml > AndroidManifest.txt
      
    2. 编辑txt文件删除目标权限,再编译为二进制Manifest:
      aapt2 compile --manifest AndroidManifest.txt -o AndroidManifest.xml
      
    3. 用zip工具替换APK内的原Manifest,最后重新签名APK。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:47:38