[Android] Android统计Apk , jar包方法数

reference to : http://www.jianshu.com/p/61e8f803e0d1

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

dexdump命令 (查看apk的method总数)

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

但是这只是apk文件,如果是jar包呢,上面的命令不能满足需求,那我们可以用下面的命令来实现:

dx --dex --verbose --no-strict --output=temp.dex xxx.jar > /dev/null

# temp.dex 生成的dex文件存放的路径
# xxx.jar 目标jar文件

生成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这个库,可真是重量级啊!

时间: 2024-12-26 04:25:48

[Android] Android统计Apk , jar包方法数的相关文章

Android项目打第三方jar包

Android项目打第三方jar包 - mengweiqi33的专栏 - 博客频道 - CSDN.NET 随着Android系统的日益发展和日渐成熟,各种平台的合作就日渐频繁.现在主要互联网公司,都退出了各种各样的插件功能.如第三方支付,第三方联合登陆和微博分享等等功能. 近期由于业务的需要,公司提出将项目的功能打成jar包,提供给其它客户调用.经过一段时间的调查研究和实践,先将解决办法总结如下. 一.原理介绍 在每个Android项目中,都会有一个R.java文件,该文件由ADT维护的,只要你

【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添加进工作的build path.3.(关键的一步)将lib设为源文件夹.如果不设置,则程序编译可以通过,但运行的时候,会报: java.lang.NoClassDefFoundError # re: Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundErro

Android Studio 如何打JAR包

Android Studio 如何打JAR包 在eclipse中我们知道如何将一个项目导出为jar包,供其它项目使用. 在AS中可以通过修改gradle才处理. 我们新建一个项目MakeJar,在项目中新建一个modle-类型为library 如图: app为我们的主工程,librarydemo是我们要将其生成jar包的model. 在librarydemo中加入如下代码: task makeJar(type: Copy) { delete 'build/libs/mysdk.jar' from

Android.mk导入第三方jar包

参考<link> 要点是加入这两个标签: LOCAL_STATIC_JAVA_LIBRARIES LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES 上面链接里没提到的是,这两个标签需要用`CLEAR_VARS`分开,并且include `BUILD_MULTI_PREBUILT`可以理解成不同的makefile: LOCAL_STATIC_JAVA_LIBRARIES := third-party-lib1 third-party-lib2 #..... #######

在Android Studio中导入jar包

#1 下载jar包文件, #2 拷贝到libs目录下 #3 打开你的build.gradle,在dependencies加入如下代码 dependencies {compile files('libs/android-support-v4.jar')compile files('libs/android-async-http-1.4.3.jar')//或者你想偷懒可以只写下面这一句,所有libs文件下的jar都会被编译compile fileTree(dir: “libs”, include: 

Android Studio 怎样打JAR包

Android Studio 怎样打JAR包 在eclipse中我们知道怎样将一个项目导出为jar包,供其他项目使用. 在AS中能够通过改动gradle才处理. 我们新建一个项目MakeJar,在项目中新建一个modle-类型为library 如图: app为我们的主project,librarydemo是我们要将其生成jar包的model. 在librarydemo中增加例如以下代码: task makeJar(type: Copy) { delete 'build/libs/mysdk.ja

Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚

如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456    (来自时之沙的csdn博客) 随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方sdk或者公共支持的jar包,项目耦合性高,重复作用的类越来越多),相信很多人都遇到过如下的错误: UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 6553

转: Android 使用android-support-multidex解决Dex超出方法数的限制问题

转自: 时之沙: http://blog.csdn.net/t12x3456 随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方sdk或者公共支持的jar包,项目耦合性高,重复作用的类越来越多),相信很多人都遇到过如下的错误: [java] view plaincopy UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536 at

Android 使用android-support-multidex解决Dex超出方法数的限制问题

随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方sdk或者公共支持的jar包,项目耦合性高,重复作用的类越来越多),相信很多人都遇到过如下的错误: UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536 at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java: