我们都知道,Android App的方法数是有天花板的,在方法数达到65536时,就会出现打包异常,这个时候,我们需要去除一些不需要的三方工具包,或者采用多Dex技术分包,都能达到正常打包的效果。

可是我们怎么能够知道当前App的方法数,来达到未雨绸缪呢?如果我们每次打包APK的时候都能知晓App的具体方法数是多少,那么我们就能及时采取对应的措施,而不是火烧眉毛的解决问题。

如何查看方法数

当然,不可能一个个的数,那样做肯定是愚蠢的,本文介绍一个统计Apk方法数的工具,Dexcount Gradle Plugin

我们首先需要配置Dexcount工具,这里笔者使用Android Studio进行配置。

buildscript {
repositories {
jcenter()
}
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.6.1'// 项目根目录build.gradle配置代码
}
}

apply plugin: 'com.android.application'

apply plugin: 'com.getkeepsafe.dexcount'//在项目build.gardle中配置代码

接下来,就算配置成功了,在Terminal窗口运行gradle assemble 或者gradlew assemble

如果build成功的话,会看到下图所示的统计:

当然,这些只是简单的Apk统计,每次打包后,都能看到当前Apk已经使用的方法数。

除此之外呢,还可以通过build/outputs/xxx来查看每个包下面的方法数。

如下图所示

总结

通过Dexcount Gradle Plugin 我们能很清楚的知道Apk当前方法数占用情况,是不是很方便,大大减小了马上上线了可是打包因为方法数超过限制的风险。

谈谈如何查看Android项目方法数的更多相关文章

  1. Android为什么方法数不能超过65535

    言归正传,来聊聊为什么方法数不能超过65535?搬上Dalvik工程师在SF上的回答,因为在Dalvik指令集里,调用方法的invoke-kind指令中,method reference index只 ...

  2. Android的方法数超过65535问题

    Under the Hood: Dalvik patch for Facebook for Android 先来看一段中文内容 Hack Dalvik VM解决Android 2.3 DEX/Line ...

  3. Android工程方法数超过64k,The number of method references in a .dex file cannot exceed 64K.

    最近将一个老的Eclipse项目转到Android Studio后,用gradle添加了几个依赖,项目可以make,但是一旦run就报错 Error:The number of method refe ...

  4. Android 65536方法数限制的思考

    前言 没想到,65536真的很小. 1 Unable to execute dex: method ID not in [0, 0xffff]: 65536 PS:本文只是纯探索一下这个65K的来源, ...

  5. 彻底解决Android 应用方法数不能超过65K的问题

    作为一名Android开发者,相信你对Android方法数不能超过65K的限制应该有所耳闻,随着应用程序功能不断的丰富,总有一天你会遇到一个异常: Conversion to Dalvik forma ...

  6. Android 解决方法数 65536 (65k) 限制

    可能出现的错误信息: Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: ...

  7. Android工程方法数超过65535的解决办法

    Error:Execution failed for task ':ttt:transformClassesWithDexForDebug'.com.android.build.api.transfo ...

  8. 解决Android 应用方法数不能超过65K的问题

    Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536 假设你的应用出 ...

  9. Android查看应用方法数

    当一个项目快速迭代时,难免引进各种依赖,从而导致单个apk超过65k的限制.如何查询apk的方法数也是每个Android Developer必备技能. 我使用的是 dex-method-counts  ...

随机推荐

  1. Load balancing 各组件的比较

    F5的Big-IP   F5 lvs Nginx HAProxy ApacheProxy lighttpd Dubbo 专有硬件 是 Linux ALL   IP   否   TCP   是   是 ...

  2. CentOS75 安装 telnet 进行使用.

    1. 安装必须要的服务 yum install xinetd telnet telnet-server 2. 修改增加root用户登录权限 vi /etc/securetty 在最后面增加两行 pts ...

  3. pixi.js v5 快速了解

    pixi.js 追求简单,  性能,高价值. pixi.js v5将是一交比较大的升级,代码更加精简,性能更加强悍,功能更加丰富,扩展更加高效 pixi.js一步一脚印,版本持续稳定的更新, 深入学习 ...

  4. robotframework+Selenium2Library 模态窗口的处理

    原文链接:https://www.cnblogs.com/zuola/p/5750018.html   所谓模态窗口,就是指除非采取有效的关闭手段,用户的鼠标焦点或者输入光标将一直停留在其上的对话框. ...

  5. 【bzoj3529】 Sdoi2014—数表

    μhttp://www.lydsy.com/JudgeOnline/problem.php?id=3529 (题目链接) 题意 多组询问,每次给出${n,m,a}$.求$${\sum_{i=1}^n\ ...

  6. psutil库

    psutil是一个非常强大的第三方库,用法简单,这里主要是做一下梳理. 先看看官方说明: psutil (python system and process utilities) is a cross ...

  7. 转载:C++中两个类中互相包含对方对象的指针问题

    原文链接:http://www.cnblogs.com/hanxi/archive/2012/07/25/2608068.html 前几天很不爽,因为C++中两个类中互相包含对方对象的指针编译时提示某 ...

  8. MySql数据库类型bit等与JAVA中的对应类型【布尔类型怎么存】

    用char(1):可以表示字符或者数字,但是不能直接计算同列的值.存储消耗1个字节 用tinyint:只能表示数字,可以直接计算,存储消耗2个字节 用bit: 只能表示0或1,不能计算,存储消耗小于等 ...

  9. error while loading shared libraries: libmysqlcppconn.so.7: cannot open shared object file: No such file or directory

    1. 即使libmysqlcppconn.so.7和与之相关存在,也报这个错误. 解决方法:临时添加LD_LIBRARY_PATH, 假使 libmysqlcppconn.so在/usr/local/ ...

  10. centos7+mysql5.7.11实现主从复制

    1  首先检测当前的系统是否已经安装了MySQL yum list installed | grep mysql 如果有的话,删除 2  下载rpm库资源,在网页 https://dev.mysql. ...