做APK方法总能遇到方法数超限的问题(主要是方法数, 字段数, String数.等各种数都可能超过65k导致不能安装) 除了大公司都自己做了一些检查方法. 网上还有一些开源的查询工具. 给大家推荐一个github:  https://github.com/mihaip/dex-method-counts 下载完代码后, 先按照要求处理一下才能使用: 如果使用ant的方式. 1. 到下载后的目录, 执行 ant jar 2. 然后就可以执行 ./dex-method-counts xx.apk 就…
以下参考自官方文档配置方法数超过 64K 的应用 随着 Android 平台的持续成长,Android 应用的大小也在增加.当您的应用及其引用的库达到特定大小时,您会遇到构建错误,指明您的应用已达到 Android 应用构建架构的极限.早期版本的构建系统按如下方式报告这一错误: Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 较新版本的 Android 构…
当一个项目快速迭代时,难免引进各种依赖,从而导致单个apk超过65k的限制.如何查询apk的方法数也是每个Android Developer必备技能. 我使用的是 dex-method-counts ,这里跟大家分享一下它的使用. 下载&&编译 下载dex-method-counts到本地 git clone https://github.com/mihaip/dex-method-counts.git 编译 cd dex-method-counts ./gradlew assemble…
我们都知道,Android App的方法数是有天花板的,在方法数达到65536时,就会出现打包异常,这个时候,我们需要去除一些不需要的三方工具包,或者采用多Dex技术分包,都能达到正常打包的效果. 可是我们怎么能够知道当前App的方法数,来达到未雨绸缪呢?如果我们每次打包APK的时候都能知晓App的具体方法数是多少,那么我们就能及时采取对应的措施,而不是火烧眉毛的解决问题. 如何查看方法数 当然,不可能一个个的数,那样做肯定是愚蠢的,本文介绍一个统计Apk方法数的工具,Dexcount Grad…
在Android项目开发中,项目代码量过大或通过引入很多jar导致代码量急剧增加,会出现错误: android.dex.DexIndexOverflowException: Cannot merge new index xxxx into a non-jumbo instruction! 错误出现的原因是 Android设定的方法数是65536个(DEX 64K problem),超过这个方法数,导致dex无法生成,就无法生成APK. 限制原因: 早期的Dalvik VM内部使用short类型变…
最近将一个老的Eclipse项目转到Android Studio后,用gradle添加了几个依赖,项目可以make,但是一旦run就报错 Error:The number of method references in a .dex file cannot exceed 64K. Learn how to resolve this issue at https://developer.android.com/tools/building/multidex.html 原因 项目的方法数超过了64k…
reference to : http://www.jianshu.com/p/61e8f803e0d1 Android在开发过程中,随着引用的库以及业务的增多,不可避免的会出现64K limit问题,也就是方法数过多的问题,Java代码中的Method总数和Field总数都不能超过65535个,那统计一下每一个jar包中包含多少个Method还是很有必要的,目前Google已经为我们实现了这样的工具: dexdump命令 (查看apk的method总数) #查看apk的method总数 dex…
如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456    (来自时之沙的csdn博客) 随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方sdk或者公共支持的jar包,项目耦合性高,重复作用的类越来越多),相信很多人都遇到过如下的错误: UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 6553…
随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方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:…
你的应用中的Dex 文件方法数超过了最大值65536的上限,会提示你: UNEXPECTED TOP-LEVEL EXCEPTION:java.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:501)at com.android.dx.merge.DexMerger$IdMerger.me…
Under the Hood: Dalvik patch for Facebook for Android 先来看一段中文内容 Hack Dalvik VM解决Android 2.3 DEX/LinearAllocHdr超限 当安卓工程庞大到一定程度(代码结构渣到一定程度)的时候,就会遇到诸如最大方法数超过限制导致无法安装,Crash等问题.Android 2.3 INSTALL_FAILED_DEXOPT 65535 问题的本质有两个 dx 打包时限制了单个dx文件的最大方法数为65535 D…
近日,Android Developers在Google+上宣布了新的Multidex支持库,为方法总数超过65K的Android应用提供了官方支持. 如果你是一名幸运的Android应用开发者,正在开发一个前景广阔的应用,不断地加入新功能.添加新的类库,那么终有一天,你会不幸遇到这个错误: Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 这个错误是And…
为什么方法数不能超过65535?搬上Dalvik工程师在SF上的回答,因为在Dalvik指令集里,调用方法的invoke-kind指令中,method reference index只给了16bits,最多能调用65535个方法,所以在生成dex文件的过程中,当方法数超过65535就会报错.细看指令集,除了method,field和class的index也是16bits,所以也存在65535的问题.一般来说,method的数目会比field和class多,所以method数会首先遇到65535问…
android MultiDex 原理下超出方法数的限制问题(三)    插件化?自动化?multiDex?是不是觉得已经懵逼了?请先看这篇文章的内容,在下篇文章中将会详解具体的过程- 随着应用不断迭代,业务线的扩展,应用越来越大(比如集成了各种第三方sdk或者公共支持的jar包,项目耦合性高,重复作用的类越来越多),相信很多人都遇到过如下的错误: UNEXPECTED TOP-LEVEL EXCEPTION: java.lang.IllegalArgumentException: method…
近日,Android Developers在Google+上宣布了新的Multidex支持库,为方法总数超过65K的Android应用提供了官方支持.如果你是一名幸运的Android应用开发者,正在开发一个前景广阔的应用,不断地加入新功能.添加新的类库,那么终有一天,你会不幸遇到这个错误: 近日,Android Developers在Google+上宣布了新的Multidex支持库,为方法总数超过65K的Android应用提供了官方支持. 如果你是一名幸运的Android应用开发者,正在开发一个…
言归正传,来聊聊为什么方法数不能超过65535?搬上Dalvik工程师在SF上的回答,因为在Dalvik指令集里,调用方法的invoke-kind指令中,method reference index只给了16bits,最多能调用65535个方法,所以在生成dex文件的过程中,当方法数超过65535就会报错.细看指令集,除了method,field和class的index也是16bits,所以也存在65535的问题.一般来说,method的数目会比field和class多,所以method数会首先…
前言 没想到,65536真的很小. 1 Unable to execute dex: method ID not in [0, 0xffff]: 65536 PS:本文只是纯探索一下这个65K的来源,仅此而已. 到底是65k还是64k? 都没错,同一个问题,不同的说法而已.65536按1000算的话,是65k ~ 65 1000;65536按1024算的话,是64k = 64 1024.重点是65536=2^16,请大家记住这个数字. 时间点 从大家的经历和这篇文章:http://develop…
作为一名Android开发者,相信你对Android方法数不能超过65K的限制应该有所耳闻,随着应用程序功能不断的丰富,总有一天你会遇到一个异常: Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536 可能有些同学会说,解决这个问题很简单,我们只需要在Project.proterty中配置一句话就Ok啦, dex.force.jumbo=true 是的,加入了这句话…
第一篇随笔就此开始. 1. 起源 思路源自于项目开发过程中.需要确认apk文件版本以验证其功能差异以便于定位问题,于是度娘,得到APK信息查看器(APK-info)这个工具,其版本号为0.2.它能显示apk详细的信息,如下图示: 但它使用不够方便,只能通过双击打开对话框找到apk文件然后显示,或者拖放apk到其图标上打开,不支持拖放至界面打开.它也没有再打开入口,且对中文支持很不好,如右图百度手机卫士apk信息. 2. 原理 析其原理,原来通过aapt.exe解开apk包中AndroidMani…
目前将项目中的leancloud的即时通讯改为环信的即时通讯.当引入easeui的时候 出现方法数超过上限的问题. 搜索一下问题,解决方法很简单. 这里简单记录一下,顺序记录一下此解决方案导致的另一个问题. 一.解决方法数超过64k的问题 问题描述: Error:The number of method references in a .dex file cannot exceed 64K. Error:Execution failed for task ':app:transformClass…
随着 Android 平台的持续成长,Android 应用的大小也在增加.当您的应用及其引用的库达到特定大小时,您会遇到构建错误,指明您的应用已达到 Android 应用构建架构的极限.早期版本的构建系统按如下方式报告这一错误: Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 较新版本的 Android 构建系统虽然显示的错误不同,但指示的是同一问题: t…
报错 : Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 原因是项目的总方法数超过限制(>65536) 解决:在appModule下的guild文件下 dependencies 里面添加: compile 'com.google.android:multidex:0.1' 在defaultConfig 里面添加: multiDexEnabled true…
Android 方法数超过64k.编译OOM.编译过慢解决方案.   目前将项目中的leancloud的即时通讯改为环信的即时通讯.当引入easeui的时候 出现方法数超过上限的问题. 搜索一下问题,解决方法很简单. 这里简单记录一下,顺序记录一下此解决方案导致的另一个问题. 一.解决方法数超过64k的问题 问题描述: Error:The number of method references in a .dex file cannot exceed 64K. Error:Execution f…
可能出现的错误信息: Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 说明:这个方法是谷歌提供的.链接如下: https://developer.android.com/studio/build/multidex.html 解决步骤: 1.步骤1: android { compileSdkVersion 21 buildToolsVersion "21.1…
关于apk 逆向中的一些工具的使用,看了不少文章,也使用过有很长一段时间了,今天对此做一总结: 几种文件之间的转换命令: 1. odex -> smali java -jar  baksmali.jar  -a <api_level>  -x <odex_file>  -d <framework_dir> 2.smali ->dex java -Xmax512M -jar samli-2.0.jar  <smali_dir>   -o class…
查看apk包名方法activity名: 方法一: aapt dump badging +客户端包所在路径+客户端包名称 如: aapt.exe dump badging K:\Apk\fanxing.apk 方法二:使用log查看大法(嗯,windows上没grep不幸福,好在有powershell的Select-String,可以拿来勉强一用),直接搬砖. a.启动待测apk b.开启日志输出:adb logcat>D:/log.txtc.关闭日志输出:ctrl+c d.查看日志 找寻: Di…
主要讲第五课的内容前缀树应用和第六课内容暴力递归改动态规划的最全步骤 第一题 给定一个数组,求子数组的最大异或和. 一个数组的异或和为,数组中所有的数异或起来的结果. 简单的前缀树应用 暴力方法: 先计算必须以i结尾的子数组的异或和,然后再计算机i+1的,以此类推... 最暴力的解 public static int getMaxEor1(int[] nums) { int maxEor = Integer.MAX_VALUE; for (int i = 0; i < nums.length;…
当Android App中的方法数超过65535时,如果往下兼容到低版本设备时,就会报编译错误: Cannot fit requested classes in a single dex file. Try supplying a main-dex list. # methods: > Message{kind=ERROR, text=Cannot fit requested classes in a single dex file. Try supplying a main-dex list.…
有些游戏第三方比如分享需要配置游戏包名和签名,不同渠道包名签名又不同,所以时常需要查看不同apk包等签名信息,之前是使用等微博开放平台的手机客户端查看apk签名,前提是知道包名,网上找了下查看签名和包名的方法,找到一个比较好用的工具分享一下. 微博开放平台查看签名工具:下载 然而,不知道包名的情况下还是无法获取的,更何况还要安装到手机上使用app获取,在开发中显然下面到方式更简便. 获取 Apk 包名.VersionCode.VersionName 等相关信息 通过使用 aapt,可以获取 Ap…
Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536 假设你的应用出现这样的问题.那恭喜你,你的app内容已经许多了,也恭喜你遇到了这么一个坑爹的问题这个问题在许多地方都有解释假设解决,可是都很麻烦.我给个比較方便的 此处解说用的是android studio 首先配置build.gradle android { compileSdkVersion 23 build…