统计APK中方法数量

原创 2015年07月19日 23:48:49

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

Android统计应用内方法数目

作为Android开发者我们都知道Android应用方法数65k这样一个限制,这是因为在Android系统中,方法的id使用short类型存储在Dex文件中,而short类型的取值范围是-32,768...
  • qq376430645
  • qq376430645
  • 2015年11月17日 11:40
  • 9121

Android之App启动时间的统计方法

之前有人在知乎提问: “怎么计算apk的启动时间?” : 利用python或者直接用adb命令怎么计算apk的启动时间呢?就是计算从点击图标到apk完全启动所花费的时间。比如,对游戏来说就...
  • zhangyongfeiyong
  • zhangyongfeiyong
  • 2017年03月13日 19:37
  • 1366

[nginx]统计文件下载是否完整思路(flask)

有一个需求是统计文件是否被用户完整下载,因为是web应用,用js没有找到实现方案,于是搜索下nginx的实现方案,把简单的探索过程记录下。 实验一 最原始的思路,查看日志,下载了一个文件之后我们看日志...
  • lzz957748332
  • lzz957748332
  • 2015年03月12日 11:10
  • 2737

统计APK中方法数量

Android开发中有对APK的方法数量做限制,不能超过65536.如果超过了该数目,会遇到如下异常: UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.Ill...
  • andylau6789
  • andylau6789
  • 2016年01月08日 16:51
  • 349

Android 统计apk中方法的数量

大家都知道Android有65535方法数的问题,那我们有什么办法能查看我们App的这个值已经有多少了呢?这里利用一个jar来查看点击下载工具如何使用?把下载下来的jar放到一个目录,比如我放在桌面上...
  • u011974987
  • u011974987
  • 2016年11月30日 12:44
  • 689

计算Android中APK或DEX方法数量工具

  • 2016年05月09日 17:24
  • 25KB
  • 下载

获取apk方法数量

  • 2015年07月19日 23:46
  • 25KB
  • 下载

使用dex-method-counts.jar来查看apk的方法数量

第一步: 注意: 要求的运行环境是java8 1. 直接下载别人编译好的dex-method-counts.jar到电脑 如 d盘 2. 这个jar自己去百度一下 csdn都是(文章最后有惊喜)...
  • yan_startwith2015
  • yan_startwith2015
  • 2017年12月21日 15:16
  • 61

单线程,多线程,线程池方法大文件指定单词数量统计

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.util.conc...
  • qq826647235
  • qq826647235
  • 2017年10月19日 20:17
  • 81

根据省市ID统计该地区账号数量方法:

html页面输出效果: 模板页面遍历输出方法代码:     暂无数据,等待添加~! tr2">     " />                                      ...
  • l513655267
  • l513655267
  • 2016年03月10日 12:45
  • 350
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:统计APK中方法数量
举报原因:
原因补充:

(最多只允许输入30个字)