常见Smali编译错误

  1. I: Using Apktool 2.0.0-RC4
  2. I: Checking whether sources has changed...
  3. I: Smaling smali folder into classes.dex...
  4. Exception in thread "main" org.jf.util.ExceptionWithContext: Unsigned short value out of range: 71412
  5. at org.jf.dexlib2.writer.DexDataWriter.writeUshort(DexDataWriter.java:116)
  6. at org.jf.dexlib2.writer.InstructionWriter.write(InstructionWriter.java:312)
  7. at org.jf.dexlib2.writer.DexWriter.writeCodeItem(DexWriter.java:990)
  8. at org.jf.dexlib2.writer.DexWriter.writeDebugAndCodeItems(DexWriter.java:769)
  9. at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:222)
  10. at org.jf.dexlib2.writer.DexWriter.writeTo(DexWriter.java:200)
  11. at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:57)
  12. at brut.androlib.src.SmaliBuilder.build(SmaliBuilder.java:41)
  13. at brut.androlib.Androlib.buildSourcesSmali(Androlib.java:354)
  14. at brut.androlib.Androlib.buildSources(Androlib.java:294)
  15. at brut.androlib.Androlib.build(Androlib.java:280)
  16. at brut.androlib.Androlib.build(Androlib.java:255)
  17. at brut.apktool.Main.cmdBuild(Main.java:225)
  18. at brut.apktool.Main.main(Main.java:84)



很多开发者之前遇到过framework.jar的函数超过限制,需要拆分,所以在Android 5.0以下的版本,会有诸如framework2.jar, framework-ext.jar, secondary-framework.jar这样的framework拆分包。但Android 5.0不再拆分jar包,而是直接拆分dex包,所以在framework.jar包中,会包含 classes.dex和classes2.dex这两个dex包,同样是为了解决函数超过限制的问题。

当其中某一个dex包的函数数量超过限制,在做apktool重编译时,就会出现如上错误。只需要将部分文件挪到另一个dex包中便可解决这个报错。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值