android sutdio 统计app工程方法数插件 避免超过65536

前言

做Android的肯定都知道android app有65536方法数的限制,至于原因也很简单,Android系统中,一个Dex文件中存储方法id用的是short类型,而short取值范围是-32768 到 32767,两者绝对值之和+1就是65536,因为65536=64*1024,所以俗称一个dex中方法数不能超过64k;这个方法数不是说只是你自己写的方法,还包含android library,第三方library等,这个在我们打包的时候,可以从输出日志上也能看到使用的方法数信息

Total methods in app-release.apk: 28294 (43.17% used)
Total fields in app-release.apk:  20689 (31.57% used)
Total classes in app-release.apk:  4238 (6.47% used)

当然了肯定是有办法突破这种限制的,今天不谈这个,谈谈怎么知道自己项目里总共有多少方法数,因为有些项目本身不大,但是依赖了一些第三方库,或者自己写了很多无用的方法,导致方法数过大,然后就吭哧吭哧的去想办法解决这个问题;其实只要在平时开发中多注意点是可以避免这些多余的操作的,避免方法数超过64k;想随时知道自己的工程里有多少方法数,就需要使用到一款插件dexcount-gradle-plugin,它能细化到每个包下面的方法数,同时还能以图表更形象的展示方法数情况

插件

插件地址

使用很简单,在项目根目录的build.gradle中添加

    dependencies {
        classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.6'
    }

在项目主module的build.gradle中添加

apply plugin: 'com.android.application'//要在android插件下方添加
apply plugin: 'com.getkeepsafe.dexcount'

然后进行如下操作
android sutdio 统计app工程方法数插件 避免超过65536_第1张图片

接下来就可以在如下图位置找到这么个文件
android sutdio 统计app工程方法数插件 避免超过65536_第2张图片

  • debug.txt 文件会列出所有包下面的方法数,变量数
  • debug.csv文件会统计整个工程的方法数总数和变量总数
  • debugChart目录下有一个html文件,用图表的形式展示工程方法数情况,如下图
    android sutdio 统计app工程方法数插件 避免超过65536_第3张图片
    android sutdio 统计app工程方法数插件 避免超过65536_第4张图片

你可能感兴趣的:(【工具及零碎知识】)