Android统计jar包方法数

Android在开发过程中,随着引用的库以及业务的增多,不可避免的会出现64K limit问题,也就是方法数过多的问题,Java代码中的Method总数和Field总数都不能超过65535个,那统计一下每一个jar包中包含多少个Method还是很有必要的,目前Google已经为我们实现了这样的工具:

dexdump命令

#查看apk的method总数
dexdump -f app.apk | grep method_ids_size
#查看apk的field总数
dexdump -f app.apk | grep field_ids_size

但是这只是apk文件,如果是jar包呢,会出现以下的结果:
Zip has no classes.dex

上面的命令不能满足需求,那我们可以用下面的命令来实现:

dx --dex --verbose --no-strict --output=/home/Desktop/temp.dex ~/Desktop/xxx.jar > ~/Desktop/temp.log

# /home/Desktop/temp.dex 生成的dex文件存放的路径
# ~/Desktop/xxx.jar 目标jar文件
# ~/Desktop/temp.log 处理过程生成的log,如果没有指定的话,那将会输出在终端中

生成temp.dex文件后,执行以下命令:

cat temp.dex | head -c 92 | tail -c 4 | hexdump -e '1/4 "%d\n"'

我对netty-3.9.5.Final.jar计算后,输出了8302
在Android上用上Netty这个库,可真是重量级啊!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,925评论 25 709
  • 以下参考自官方文档配置方法数超过 64K 的应用 随着 Android 平台的持续成长,Android 应用的大小...
    Mars_M阅读 1,586评论 3 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,083评论 19 139
  • 听说黄豆会发芽,我很好奇。 上周四,老师给每个人发了五粒黄豆,我发现它是土黄色的,卵圆形状,非常小,就像一个缩小版...
    小丁满阅读 306评论 0 0
  • 卸下华丽繁琐的外衣 放飞禁锢的灵魂 世间万种 此时已是浮云朵朵 天籁之音随风而奏 轻歌曼舞 裙摆飞扬 不沾染半点尘...
    梨花院宇阅读 257评论 0 2