Apktool 错误导致:org.jf.util.ExceptionWithContext:在代码偏移 0x2 处写入指令时出错

问题描述 投票:0回答:1

大家好,我在 Linux 中使用 apktool 反编译了一个 apk,我做了一些实际上并不多的更改,我非常确定我的文件中没有任何问题,但是当我再次重新编译 apk 时,我收到错误,所以我尝试通过 windows Easy apk 工具完成此操作,但我仍然遇到正常错误,有人知道如何解决这个问题吗?

这是日志

11/26/2023 12:48:17 上午

java版本“1.8.0_391” Java(TM) SE 运行时环境(内部版本 1.8.0_391-b13) Java HotSpot(TM) 客户端虚拟机(版本 25.391-b13,混合模式,共享)

正在编译APK文件...(按ESC取消) 命令:java.exe -jar "C:\Users\Yahia\Downloads\APK Easy Tool v1.60 Portable\Apktool pktool_2.6.1.jar" b -f --use-aapt2 -o "C:\Users\Yahia \Downloads\APK Easy Tool v1.60 Portable - 重新编译的 APKs\original.apk" "C:\Users\Yahia\Desktop ppneedscombaining oot\原版”

我:使用Apktool 2.6.1 I:将 smali 文件夹放入classes.dex... 线程“main”org.jf.util.ExceptionWithContext 中出现异常:为方法 Landroidx/annotation/InspectableProperty$ValueType 编写 code_item 时发生异常;->values()[Landroidx/annotation/InspectableProperty$ValueType; 在 org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:1047) 在 org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:346) 在 org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:301) 在 brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:58) 在 brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:37) 在 brut.androlib.Androlib.buildSourcesSmali(Androlib.java:430) 在 brut.androlib.Androlib.buildSources(Androlib.java:361) 在 brut.androlib.Androlib.build(Androlib.java:313) 在 brut.androlib.Androlib.build(Androlib.java:280) 在 brut.apktool.Main.cmdBuild(Main.java:255) 在 brut.apktool.Main.main(Main.java:82) 引起原因:org.jf.util.ExceptionWithContext:在代码偏移 0x2 处写入指令时出错 在 org.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:1320) 在 org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:1043) 还有 10 个 导致:org.jf.util.ExceptionWithContext:无符号短值超出范围:65554 在 org.jf.dexlib2.writer.DexDataWriter.writeUshort(DexDataWriter.java:116) 在 org.jf.dexlib2.writer.InstructionWriter.write(InstructionWriter.java:356) 在 org.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:1280) 还有11个

编译失败。请阅读日志

反编译应用程序然后重新编译它

decompiling apktool recompile
1个回答
0
投票

您已超出每个 dex 文件允许的方法数量。从这一行就可以看出。

原因:org.jf.util.ExceptionWithContext:无符号短值超出范围:65554

每个 dex 的最大方法数是无符号短整数 65,535。在某些情况下,作为反汇编的副产品,baksmali 可能会生成比以前更多的方法。但是,由于这个大小,我相信您编辑/添加了更多方法并超出了可用的大小。

© www.soinside.com 2019 - 2024. All rights reserved.