查询apk中的java方法数

#! /bin/sh

# 获得完整apk路径
APK_PATH=$1

# 创建一个临时目录,来解压这个apk文件
rm -rf apk_temp
mkdir apk_temp
cp $APK_PATH apk_temp/
cd apk_temp

# 获得apk的名称
APK_NAME="$(basename *.apk)"

# 重命名为zip
mv $APK_NAME $APK_NAME.zip

# 解压apk,得到classes.dex包
unzip -x $APK_NAME.zip > /dev/null

# 计算dex中的method数量
METHOD_COUNT=`cat classes.dex | head -c 92 | tail -c 4 | hexdump -e ‘1/4 "%d\n"‘`

# 输出method数量
echo $METHOD_COUNT

# 删除无用目录
cd .. && rm -rf apk_temp

保存为sh,执行sh  *.apk

时间: 2024-10-31 23:15:29

查询apk中的java方法数的相关文章

解决安卓中单个dex方法数超过65535的方法

1.百度下载  60K-methods.jar包,复制至libs文件夹中,添加到gradle中 2.在build.gradle中的defaultConfig{}下添加 multiDexEnabled true 3.  方法一.在manifest文件中,application下添加  android:name= "android.support.multidex.MultiDexApplication" 方法二.新建Application类,在onCreate方法中,添加方法 Multi

APK中java代码反编译

Android APK中的Java代码可以被反编译到什么程度主要看APK的加密程度. 第一种情况:无混淆无加密无加壳.直接利用Dex2jar和JD-GUI可把源码从APK里抠出来,代码逻辑清晰,基本上做到可复用,只是资源文件的引用需要计算一下. 第二种情况:混淆.通常是利用Proguard做的防护.因为是对jar做的不可逆混淆(除非有mapping),因此不能还原成原来的代码.但是代码结构,代码逻辑一致,只要花长时间对代码进行梳理一样可找准核心代码,解密方法跟第一种一致. 第三种情况:加密.这里

[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总数 dex

APK方法数超过65535及MultiDex解决方案

以下参考自官方文档配置方法数超过 64K 的应用 随着 Android 平台的持续成长,Android 应用的大小也在增加.当您的应用及其引用的库达到特定大小时,您会遇到构建错误,指明您的应用已达到 Android 应用构建架构的极限.早期版本的构建系统按如下方式报告这一错误: Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 较新版本的 Android 构

查看APK方法数的工具dex-method-counts

做APK方法总能遇到方法数超限的问题(主要是方法数, 字段数, String数.等各种数都可能超过65k导致不能安装) 除了大公司都自己做了一些检查方法. 网上还有一些开源的查询工具. 给大家推荐一个github:  https://github.com/mihaip/dex-method-counts 下载完代码后, 先按照要求处理一下才能使用: 如果使用ant的方式. 1. 到下载后的目录, 执行 ant jar 2. 然后就可以执行 ./dex-method-counts xx.apk 就

Java使用XPath查询XML中的元素

使用java中的xpath语法查询xml中元素 1.查询的xml文件为student.xml文件 <?xml version="1.0" encoding="UTF-8" ?><students> <student class="1201">  <name>李小离</name>  <sex>男</sex>  <age>25</age> &l

LeetCode第[91]题(Java):Decode Ways(解码方法数)

题目:解码方法数 难度:Medium 题目内容: A message containing letters from A-Z is being encoded to numbers using the following mapping: 'A' -> 1 'B' -> 2 ... 'Z' -> 26 Given a non-empty string containing only digits, determine the total number of ways to decode

【java】在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException

场景: 在分页查询结果中对最后的结果集List进行操作add()或remove()操作,报错:java.lang.UnsupportedOperationException 错误: java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableCollection.add(Collections.java:1055) at com.pisen.cloud.luna.ms.goods.api.impl.Te

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