美文网首页
统计APK中方法数量

统计APK中方法数量

作者: oemersV阳阳 | 来源:发表于2017-02-10 15:51 被阅读81次

    Android开发中有对APK的方法数量做限制,不能超过65536.如果超过了该数目,会遇到如下异常:

    Conversion to Dalvikformat failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536

    之所以出现上述问题,主要原因在于Android系统中,方法id存储在Dex文件中使用的是short类型数据,所以导致了dex中方法不能超过65k。

    知道了上面的限制,那么如何知道生成的APK的方法数量呢?以及如何解决APK中方法总数超过65536并生成包。

    我们可以使用dex-method-counts(https://github.com/mihaip/dex-method-counts)来统计包中的总体数量,使用方法很简单,只需执行下面语句即可:

    java -jar path\dex-method-counts.jar path\App.apk

    为了省却大家重新编译生成jar包问题,提供下载地址

    知道了统计包中方法数量,如果超过了限制如何处理呢?

    首先想到的就是去掉代码中没使用到的函数,去掉没有使用到的jar包,以及将类中成员由private换成public,减少set/get函数。但是这些都是去标不去本的方法,有没什么更好的解决方法呢?

    采用类似微信方式的插件or使用分包机制。

    详细内容可以参考美团提供的解决方案:

    http://tech.meituan.com/mt-android-auto-split-dex.html

    相关文章

      网友评论

          本文标题:统计APK中方法数量

          本文链接:https://www.haomeiwen.com/subject/faggittx.html