Android方法数统计
来源:互联网 发布:html5手机网站源码 编辑:程序博客网 时间:2024/06/09 14:56
背景
在大项目合作中,我们会提供SDK给业务App使用,如果导致主Dex方法数超过65536,会导致打包不过,这个时候引入的方法数会成为一个衡量标准(考虑到应用稳定性等因素,MutiDex不会被优先考虑,比如手机淘宝)。
步骤
生成aar
1)使用命令assemble生成aar
./gradlew assemble
2)在${module}/build/outputs/aar目录下找到aar文件,如下:
生成dex
1)先解压aar文件,定位到对应的classes.jar
unzip telescopebase-debug.aar -d telescopebase-debug.aar.dircd telescopebase-debug.aar.dir
2)使用dx命令,这个在android sdk的build-tools文件夹中,例如我的在/Users/yuanchang/Library/Android/sdk/build-tools/23.0.3/dx
。命令如下:
dx --dex --verbose --no-strict --output=classes.jar.dex classes.jar
到这一步,得到目标dex文件classes.jar.dex
统计dex的方法数
1)下载dex-method-count来统计方法数,链接:
https://github.com/mihaip/dex-method-counts
2)使用dex-method-count来统计方法数
$ dex-method-counts --output-style=flat --max-depth=3 classes.jar.dexProcessing classes.jar.dexRead in 1792 method IDs. 15 android.app 15 android.content 4 android.content.res 1 android.database 3 android.graphics 1 android.opengl 82 android.os 2 android.text 5 android.util 57 android.view 5 android.widget 38 com.ali.telescope.api 6 com.ali.telescope.base.KV...... 35 com.ali.telescope.internal.report 4 com.ali.telescope.spi 65 com.ali.telescope.util 2 com.ali.telescopesdk 4 dalvik.system 53 java.io 135 java.lang 2 java.lang.ref 23 java.lang.reflect 16 java.net 2 java.nio.charset 4 java.security 2 java.text 71 java.util 5 java.util.concurrent 6 java.util.zip 68 libcore.io 20 org.json 2 reflect.android.app 2 reflect.android.os 37 reflecthelperOverall method count: 1792
可以看到这个模块对应的方法数是1792个,–output-style=flat 表示使用扁平输出风格(对应的是树状) –max-depth=3 表示最大层次是3层包名深度
附录
除了上面提到的dex-method-count之外,还可以通过一个gradle插件来实现项目方法数统计(统计的是整包的,包含android库,support-v4,v7等等),好处是有一个图形界面显示,如下:
参考链接:https://github.com/KeepSafe/dexcount-gradle-plugin/blob/master/README.md
- android方法数统计
- Android方法数统计
- Android统计APK方法数
- android 统计app方法数
- Android apk文件方法数统计
- 统计Android apk和jar的方法数
- 怎样高效统计Android开源库的方法数
- [Android] 统计apk中各个模块中的方法数
- 如何查看或者统计android的apk的方法数
- Android统计流量方法
- dede统计栏目文章数实现方法
- 各类EDA软件统计pin数方法
- 统计Oracle 查询事务数的方法
- apk java方法数的统计
- 统计apk里的方法数
- 统计apk方法数的jar包
- 统计Xcode代码总行数的方法
- android 数据库 数据表统计条数
- spring学习总结(三)
- html meta标签大全
- LeetCode--Largest Number(最大数字)Python
- 蓝桥杯 算法训练 连续正整数的和
- String
- Android方法数统计
- JavaScript---网络编程(1)-介绍、变量、运算符与语句
- 移动端css样式设置
- 112. Path Sum
- 2017年网络中比较全面的Android面试题
- 结构化机器学习项目Quiz2
- CentOS7关闭firewalld开启iptables
- caffe+python+mnist从图片训练到测试单张图片
- mycat和mysql