使用Apktool重新编译APK时执行apktool b .apk命令报错
解决Apktool编译APK时的权限与语法错误问题
你的编译报错信息如下:
I: Using Apktool 2.7.0 I: Checking whether sources has changed... I: Checking whether sources has changed... I: Checking whether sources has changed... I: Checking whether resources has changed... I: Building resources... brut.androlib.AndrolibException: brut.common.BrutException: could not exec (exit code = 1): [/data/data/com.termux/files/usr/tmp/brut_util_Jar_82197003944312111479219531023469594915.tmp, p, --forced-package-id, 127, --min-sdk-version, 21, --target-sdk-version, 29, --rename-manifest-package, com.aliucord.installer2, --version-code, 107, --version-name, 1.0.7, --no-version-vectors, -F, /data/data/com.termux/files/usr/tmp/APKTOOL5369737272708573366.tmp, -e, /data/data/com.termux/files/usr/tmp/APKTOOL17725436950078718587.tmp, -0, arsc, -I, /data/data/com.termux/files/home/.local/share/apktool/framework/1.apk, -S, /storage/emulated/0/Download/DAPK/Aliucord/res, -M, /storage/emulated/0/Download/DAPK/Aliucord/AndroidManifest.xml] W: /data/data/com.termux/files/usr/tmp/brut_util_Jar_82197003944312111479219531023469594915.tmp[1]: can't create �c,@f-@8: Operation not permitted W: /data/data/com.termux/files/usr/tmp/brut_util_Jar_82197003944312111479219531023469594915.tmp[714]: syntax error: unexpected '('
针对这些错误,试试下面的解决步骤:
升级/更换Apktool版本
Apktool 2.7.0在Termux环境下可能存在兼容性问题,换成最新稳定版本:- 移除旧版本:
rm -f $(which apktool) - 下载脚本和最新jar包:
wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktoolwget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.8.1.jar(可替换为官网最新版本号) - 重命名jar包:
mv apktool_2.8.1.jar apktool.jar - 设置执行权限:
chmod +x apktool apktool.jar - 移动到可执行目录:
mv apktool apktool.jar $PREFIX/bin/
- 移除旧版本:
自定义Apktool临时目录
Termux默认tmp目录可能存在权限或编码问题,指定自己的临时目录:- 创建自定义临时目录:
mkdir -p ~/apktool_tmp - 编译前设置环境变量:
export APKTOOL_TMP=~/apktool_tmp - 再运行编译命令:
apktool b .
- 创建自定义临时目录:
检查资源文件语法
报错里的syntax error: unexpected '('提示资源文件存在语法问题,重点排查:/storage/emulated/0/Download/DAPK/Aliucord/AndroidManifest.xml:确认所有括号、标签闭合正常,没有语法错误res目录下的xml文件:比如布局、values文件夹里的文件,检查是否有多余或缺失的括号、引号
重新反编译APK后再编译
有时候反编译过程中文件损坏,导致编译报错:- 删除当前反编译目录:
rm -rf /storage/emulated/0/Download/DAPK/Aliucord - 重新反编译原APK:
apktool d 原APK文件名.apk -o /storage/emulated/0/Download/DAPK/Aliucord - 进入目录执行编译:
cd /storage/emulated/0/Download/DAPK/Aliucord && apktool b .
- 删除当前反编译目录:
内容的提问来源于stack exchange,提问作者JoJo
相关产品推荐
相关产品推荐

