Articles of dalvik

dex loader无法执行dex:方法ID不在:65536中

我建立我的应用程序我得到了这个错误 Dx警告:忽略没有关联的EnclosingMethod属性的匿名内部类(com.amazonaws.javax.xml.stream.xerces.util.SecuritySupport12 $ 4)的InnerClasses属性。 这个类可能是由一个没有以现代.class文件格式为目标的编译器生成的。 建议的解决方案是使用最新的编译器从源代码重新编译类,而不指定任何“-target”types选项。 忽略此警告的后果是,对此类的reflection操作将错误地指示它不是内部类。 Dex Loader]无法执行dex:方法ID不在[0,0xffff]中:65536转换为Dalvik格式失败:无法执行dex:方法ID不在[0,0xffff]中:65536

LinearAlloc超出容量(5242880),最后= 1092在我的Samsung Tablet设备上安装时出错

我不断得到,这在logcat错误 DexOpt: not resolving ambiguous class ‘Lorg/apache/http/client/utils/URLEncodedUtils;’ 12-07 05:26:01.085: ERROR/dalvikvm(4620): LinearAlloc exceeded capacity (5242880), last=1092 12-07 05:26:01.085: ERROR/dalvikvm(4620): VM aborting 12-07 05:26:01.187: INFO/DEBUG(2373): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 12-07 05:26:01.187: INFO/DEBUG(2373): Build fingerprint: ‘samsung/SGH-T849/SGH-T849/SGH-T849:2.2/FROYO/UVJJB:user/release-keys’ 12-07 05:26:01.187: INFO/DEBUG(2373): pid: 4620, tid: 4620 >>> /system/bin/dexopt <<< […]

如何使用注释处理器检查整个源代码树?

我有很多处理特定消息types的处理程序类。 要注册所有这些处理程序,我需要知道存在哪些处理程序。 目前,它们都使用特定的注释进行注释,并且我使用Java 6注释处理器来获取所有这些注释处理器,并创建一个包含每个注释types的实例的Register类。 如果整个树一次构建,这很有效,但如果只构建一个带注释的类(例如,当我在Eclipse中保存文件时),处理器只能看到该types,并构建一个不完整的Register。 如何检查此方案中的其他types?

android test-project构建工具v17中的VerifyError

自安装v17的android构建工具后,我在我的测试项目中得到了一个VerifyError。 我的项目结构的简短描述: 所有jar文件都存在于我的主项目libs文件夹中 测试项目是一个驻留在我的主项目中的项目 所有Instrumentation测试都与我的活动存在于同一个包中。 我有一个jar,只有测试项目中我的libs文件夹中的测试项目才需要 有没有人见过这个? 它发生在我更新后的所有项目中。 运行测试会产生一个InstrumentationException:java.lang.VerifyError

如何在较低平台版本中使用不受支持的exception

我有一个DialogFragment处理我的应用程序的登录和指纹validation。 此片段使用两个专用于API 23, KeyGenParameterSpec和KeyPermanentlyInvalidatedException 。 我一直认为我可以使用这些类,只要在我尝试初始化类之前检查构建版本( 在此概述): if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { … } else { … } 但似乎情况并非如此。 如果我尝试在API 20之前的版本上运行此代码,则Dalvik VM会拒绝整个类并抛出VerifyError 。 但是,该代码适用于API 20及更高版本。 如何在我的代码中使用这些方法,同时仍允许将代码用于以前的API级别? 完整堆栈跟踪如下: 05-31 14:35:50.924 11941-11941/com.example.app E/dalvikvm: Could not find class ‘android.security.keystore.KeyGenParameterSpec$Builder’, referenced from method com.example.app.ui.fragment.util.LoginFragment.createKeyPair 05-31 14:35:50.924 11941-11941/com.example.app W/dalvikvm: VFY: unable to resolve new-instance 263 (Landroid/security/keystore/KeyGenParameterSpec$Builder;) in Lcom/example/app/ui/fragment/util/LoginFragment; 05-31 14:35:50.924 11941-11941/com.example.app […]

如何在使用Google Play服务时避免65k方法限制

如果你发现自己编写了一个依赖于许多不同库的大型Android应用程序(我建议不要重新发明轮子),很可能你已经遇到了Dalvik可执行文件classes.dex的65k方法限制 。 此外,如果您依赖于Google Play Services SDK这样的大型库本身已经在5.0版中包含了超过20k的方法,那么您将不得不使用诸如剥离包或multidex支持之 类的技巧来避免打包时出错。 由于Android Lollipop多个dex文件更易于处理,因此Android的新运行时ART已公开发布,但目前开发人员仍被迫进行方法计数。 在使用Google Play服务时,减少应用程序方法数量的最简单方法是什么?

什么是Smali Code Android

我将学习一些关于Dalvik VM,dex和Smali的知识。 我已经读过关于smali的内容,但仍然无法清楚地了解它在编译器链中的位置。 它的目的是什么。 这里有一些问题: 据我所知,dalvik作为其他虚拟机运行字节码,在Android的情况下它是dex字节码。 什么是小? Android OS或Dalvik Vm是否可以直接使用它,或者它只是相同的dex字节码,但对人类更具可读性? 是不是像Windows的dissasembler(如OllyDbg)程序可执行程序包含不同的机器代码(例如D3,5F),并且每个机器代码都有适当的汇编命令,但Dalvik Vm也是软件,因此smali是字节码的可读表示 有新的ART环境。 它仍然使用字节码或直接执行本机代码吗? 先谢谢你。

使用gcc的C ++前端编译C代码的好处

我对一年前推出的android dalvik平台上的这个提交非常疑问和困惑。 文件扩展名已更改为C ++扩展,以“将解释器移动到C ++” – 使用编译器的C ++前端。 这种变化可能带来什么好处? Dalvik Platform是一个100%的C&asm项目,并没有使用任何C ++function 。

为什么在一个简单的应用程序中有这么多GC_FOR_ALLOC?

我从dalvikvm获得了太多的GC_FOR_ALLOC。 我从REST服务获取XML:在一个活动中,我以编程方式(我)解析大约100行,而在另一个活动中,我使用SimpleXML来解析大约200行。 在第一个中我得到50个GC_FOR_ALLOC。 在第二个我得到300! (我甚至不能发布所有内容,机身制作29579个字符,它只允许30k) 我搜索过,几乎每个人都抱怨gc_for_“M”alloc而不是gc_for_“A”lloc。 SimpleXML是否是因为实例创建的问题? 我将发布dalvikvm的logcat转储,也许这些值有一些信息。 非常感谢您的帮助。 12-11 06:13:49.564: D/dalvikvm(6759): GC_FOR_ALLOC freed 362K, 13% free 4116K/4688K, paused 181ms, total 182ms 12-11 06:13:50.074: D/dalvikvm(6759): GC_FOR_ALLOC freed 303K, 13% free 4134K/4708K, paused 142ms, total 142ms …. repeated many times ….. 12-11 06:14:06.254: D/dalvikvm(6759): GC_FOR_ALLOC freed 73K, 13% free 4159K/4768K, paused 53ms, total 53ms 12-11 06:14:06.314: […]

尽管可用内存可用,但OutOfMemory错误

我看到一个非常奇怪的问题。 基本上有时大的位图内存分配将失败,即使显然有大量的内存。 有很多post似乎问了类似的问题,但它们都与蜂窝前的安卓有关。 我的理解是图像现在分配在堆上,而不是一些外部存储器。 无论如何,请看下面这个日志: 10-14 13:43:53.020: INFO/dalvikvm-heap(31533): Grow heap (frag case) to 40.637MB for 942134-byte allocation 10-14 13:43:53.070: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed 126K, 11% free 41399K/46343K, paused 31ms 10-14 13:43:53.130: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed 920K, 13% free 40478K/46343K, paused 30ms 10-14 13:43:53.180: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed 1026K, 13% free 40479K/46343K, paused 30ms 10-14 13:43:53.250: DEBUG/dalvikvm(31533): GC_FOR_ALLOC freed […]