统计apk或jar中方法数量

一、apk中方法数量

./android-sdk-linux/build-tools/23.0.2/dexdump -f  apk路径 | grep method_ids_size

二、jar中方法数量(转载)

#! /bin/sh

# 获得输入的jar文件
JAR_FILE=$1;

# 这里直接使用dx命令,是因为我已经提前配置好了环境变量,dx目录位于:
# $ANDROID_HOME/sdk/build-tools/android-4.3.1/dx
dx --dex --verbose --no-strict --output=temp.dex $JAR_FILE > /dev/null

# 计算jar包中的方法数
METHOD_COUNT=`cat temp.dex | head -c 92 | tail -c 4 | hexdump -e ‘1/4 "%d\n"‘`

# 显示结果
echo $METHOD_COUNT

# 删除临时文件temp.dex
rm -f temp.dex

保存为jarmethod.sh

为了使用起来更方便,建议将其添加一个软链到bin目录,比如可以这样:

# 先更改下权限
chmod 0755 jarmethod.sh

# 软连到bin目录,这样可以在任何目录直接执行该工具
cd /usr/local/bin
ln -s jarmethod.sh路径 jarmethod

使用方法:jarmethod jar包路径

时间: 2024-10-12 04:27:25

统计apk或jar中方法数量的相关文章

统计APK中方法数量

Android开发中有对APK的方法数量做限制,不能超过65536.如果超过了该数目,会遇到如下异常: Conversion to Dalvikformat failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536 之所以出现上述问题,主要原因在于Android系统中,方法id存储在Dex文件中使用的是short类型数据,所以导致了dex中方法不能超过65k. 知道了上面的限制,那么如何知道生成的APK的方法数量呢?以及如何

mysql统计一张表中条目个数的方法

统计一张表中条目的个通常的SQL语句是: select count(*) from tableName; #or select count(1) from tableName; #or 统计一个列项,如ID select count(ID) 另外,可通过使用information_schema统计个数 MySQL中有一个名为 information_schema 的数据库,在该库中有一个 TABLES 表,这个表主要字段分别是: TABLE_SCHEMA : 数据库名 TABLE_NAME:表名

problem中Project'XX'is missing required library:'[路径]\XXX.jar'解决方法

起因: 今天在接手同事做的一个项目时,发现用Myeclipse部署后,项目里有不少网页出现红叉,逐个修改完后,项目理应不再显示红叉,但奇怪的是,项目所有的子文件都没错误,项目根目录却有个红叉...>_<!同时Myeclipse下的problem中出现一堆error,提示:Project ‘XXX’ is missing required library:'[path] \ XXX.jar'. 解决: 出现这种情况的原因是:在你项目的build path Library中存在重复并且冲突或者地址

ResourceBundle读取properties文件不在jar中的方法

ResourceBundle读取的文件是在classpath路径下,也就是src或者src目录下,而我们在项目中需要打包,打包后的properties文件在jar中,修改很不方便,我们需要把properties文件放在jar外随时可以修改. 1.一般情况下ResourceBundel读取文件方式默认的读取路径是classpath,配置文件名为resourceBundle.properties.在src根目录下为: ResourceBundle rb=ResourceBundle.getBundl

Java中如何修改Jar中的内容

一.摘要 好长时间没写blog了,之前换了一家公司.表示工作更有战斗力了,可惜就是没时间写文章了.在这段时间其实是遇到很多问题的,只是都是记录下来,并没有花时间去研究解决.但是这周遇到这个问题没办法让我继续前进了.必须记录一下.以被后人使用.不多说了,进入主题. 二.前提 1.对于GA的了解(自行google) 2.对CampaignTrackingReceiver类的了解,他是当从GP上下载并且安装完成一个app的时候,发送一个广播,会在Intent中携带一些数据,一般是Refer值,这里可以

关于Android方法数量限制的问题

限制Android方法数量的原因是: Android应用以DEX文件的形式存储字节码文件,在Dalvik字节码规范里,方法引用索引method referenceindex只有16位,即65536个. Op & Format Mnemonic / Syntax Arguments 6e..72 35c invoke-kind {vC, vD, vE, vF, vG}, [email protected] B: method reference index (16 bits) 注意是method

顺序统计:寻找序列中第k小的数

最直观的解法,排序之后取下标为k的值即可. 但是此处采取的方法为类似快速排序分块的方法,利用一个支点将序列分为两个子序列(支点左边的值小于支点的值,支点右边大于等于支点的值). 如果支点下标等于k,则支点就是查找的值,如果支点的下标大于k,则在左子序列里继续寻找,如果支点下标小于k,则继续在支点右子序列里面继续寻找第(k-支点下标)小的值. c#实现算法如下: public class FindSpecialOrderElement<T> where T : IComparable<T&

使用Awstats统计部署在tomcat中的网站数据

由于项目的需要,所以这几天对AWStats的使用方法做了一番研究,因此把这次的心得体会分享给大家,希望可以给予大家一丝帮助,有疏漏的地方,恳求悉心指正,多谢. 首先说明一下AWStats的用途和特点,AWStats是一个开源的基于perl的网站统计工具. 它可以统计站点的信息主要有: 一.访问量,访问次数,页面浏览量,点击数,数据流量等 二.精确到每月.每日.每小时的数据 三.访问者国家 四.访问者IP 五.Robots/Spiders的统计 六.访客持续时间 七.对不同Files type 的

顺序统计:寻找序列中的最大最小数

查找输入序列中的最大最小数值,要求时间复杂度为1.5n C#实现如下: public class MinMaxFinder<T> where T : IComparable<T> { public void FindMinMax(T[] array, int startIndex, int endIndex, out T minValue, out T maxValue) { maxValue = array[startIndex]; minValue = array[startI