近日,我们的应用,在编译的时候不幸的遇到这个错误
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
这才让我意识到原来我们的程序中,方法数已经超过了65536。在之前,已经知道了android系统的java虚拟机dalvik在执行java程序时,使用原生类型short来索引dex文件中的方法,因此方法数就呗限制在65536了。之前我一直以为,这个数量已经很大了,不会达到上限,结果今天就达到了。
不过这个东西呢,我们也是很容易的进行解决的,因为,就在去年不久前,google官方提供了多dex继续阅读 »
前言
前面我们有说过android反编译的工具,如何进行反编译。反编译后可以得到jar或者得到smali文件。Android采用的是java语言进行开发,但是Android系统有自己的虚拟机Dalvik,代码编译最终不是采用的java的class,而是使用的smali。我们反编译得到的代码,jar的话可能很多地方无法正确的解释出来,如果我们反编译的是smali则可以正确的理解程序的意思。因此,我们有必要熟悉smali语法。
类型的表示
java里面包含两种类型,原始类型和引用类型(包括对象),同时映射到smali也是有这两大类型。
more
原始类型
V void (只能用于返回值类型)
Z boolean
B by继续阅读 »