Apktool执行apktool b hw编译APK失败,未生成dist文件夹与APK文件
问题根因分析
你执行apktool b hw后没有生成dist目录和APK的核心原因是资源编译阶段触发致命错误,你看到的W前缀输出不是普通警告:这些是aapt资源打包工具返回的错误信息,只是被Apktool统一标记为警告输出。
报错指向res/values/styles.xml中引用的多个@android:style开头的系统主题在你当前Apktool加载的系统框架包中不存在,最终触发brut.androlib.AndrolibException异常,编译流程直接终止。
解决方案
- 方案1:安装对应版本的系统framework框架包
你反编译的APK目标SDK版本为28(Android 9),当前本地Apktool使用的默认1.apk框架包缺少对应主题资源。你可以先提取Android 9系统的framework.apk文件,执行以下命令安装到Apktool框架库:apktool if framework.apk
安装完成后重新执行编译命令即可。 - 方案2:手动修正styles.xml的错误引用
如果无法获取对应framework包,可以直接打开报错的hw/res/values/styles.xml文件,逐一修改所有报错的parent主题引用:- 把废弃的Holo系列主题替换为当前framework包中存在的对应Material/DeviceDefault主题
- ROM定制的私有系统主题可以替换为通用的同类型系统主题,也可以直接删除不存在的主题继承配置
- 方案3:使用--no-res参数跳过资源编译
如果你不需要修改资源、仅需要修改smali代码,可以编译时添加参数跳过资源校验:apktool b hw --no-res
该参数可以直接绕过资源编译阶段,正常生成APK文件。
内容的提问来源于stack exchange,提问作者Andrei Iosifescu
相关产品推荐
相关产品推荐

