Chinaunix首页 | 论坛 | 博客
  • 博客访问: 341986
  • 博文数量: 80
  • 博客积分: 711
  • 博客等级: 上士
  • 技术积分: 733
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-23 15:43
文章分类

全部博文(80)

文章存档

2015年(9)

2014年(14)

2013年(33)

2012年(24)

我的朋友

分类: Android平台

2015-04-03 10:48:01

在Android 5.0以上,使用 apktool 2.0, 对framework.jar包重编译时,可能会出现如下错误:

点击(此处)折叠或打开

  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包中便可解决这个报错。


阅读(7600) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

3086584212016-06-21 11:05:24

hi,你好,请问“只需要将部分文件挪到另一个dex包中便可解决这个报错”这个只需要挪移那部分文件?