Tag: dalvik

Dalvik和dalvik-cache是​​什么?

我知道这可能是Android的一个基本问题。 但Dalvik和dalvik-cache是​​什么?

Android中的ODEX文件是什么?

安装了一些android应用程序之后,我发现它会在智能手机中更改为odex文件(而不是apk )。 它是怎么发生的? 谁能教我,我对此非常感兴趣。

为什么基于JVM栈和Dalvik VM寄存器?

我很好奇,为什么Sun决定创build基于JVM栈,而Google决定制作基于DalvikVM寄存器的? 我猜想JVM不能真的假定在目标平台上有一定数量的寄存器可用,因为它应该是平台独立的。 因此,它只是推迟寄存器分配等,到JIT编译器。 (如我错了请纠正我。) 所以,Android的人认为,“嘿,这是无效的,让我们立即注册基于VM …”? 但是,等等,有多种不同的Android设备,Dalvik目标有多less个寄存器呢? Dalvik操作码是否针对一定数量的寄存器进行硬编码? 目前市场上所有的Android设备都拥有相同数量的寄存器吗? 或者,是否有在dex-loading期间执行的寄存器重新分配? 这一切如何融合在一起?

Dalvik的内存模型和Java的一样吗?

Dalvik的内存模型和Java的一样吗? 我特别感兴趣的是参考和非long /非double原始variables的读写是否是primefaces的,但是我也想知道两个平台的内存模型之间是否有区别。

了解Android:Zygote和DalvikVM

我试图了解Android如何推广应用程序。 问题是如何zygote正好分叉Dalvik虚拟机。 我真的不明白为什么不能在同一个Dalvik虚拟机上运行多个应用程序。

我可以从Dalvik和Android工具链中获得什么样的优化?

我正在研究一个高性能的Android应用程序(一个游戏),尽pipe我首先尝试为可读性编写代码,但是我仍然喜欢把脑海中正在发生的事情放在脑海中。 用C ++,我已经开发了一个相当好的直觉了解编译器会做什么,不会为我做什么。 我正在尝试为Java / Android做同样的事情。 因此,这个问题。 在networking上我可以find关于这个话题的很less的东西。 Java编译器,Dalvik转换器(dx)和/或JITter(在Android 2.2+上)会执行如下的优化吗? 方法内联。 在什么条件下? private方法总是可以安全地内联; 这会完成吗? public final方法如何? 其他类的对象的方法? static方法? 如果对象的运行时types可以很容易地被编译器推断出来怎么办? 我应该尽可能将方法声明为final或static吗? 常见的子expression式消除。 例如,如果我访问someObject.someField两次,查询是否只做一次? 如果这是一个getter的调用呢? 如果我使用了两次算术expression式呢? 只会评估一次吗? 如果我将某个expression式的结果用作for循环的上界,那我该怎么办? 边界检查arrays查找。 工具链会在某些情况下消除这个问题,比如原型循环? 价值内联。 将访问到一些public static final int总是内联? 即使他们在另一个class级? 即使他们在另一个包裹? 分支预测。 这个问题甚至有多大? 分支是一个典型的Android设备上的大型性能? 简单的算术。 将someInt * 2replace为someInt << 1 ? 诸如此类……

Android ART运行时是否与Dalvik有相同的方法限制?

Android ART运行时是否与Dalvik有相同的方法限制? 目前,主dex文件中有64k个方法的限制

Android:我的应用程序太大,并提供“无法执行dex:方法ID不在:65536”?

我正在尝试将我的应用程序与Box,Dropbox和Google Drive集成在一起。 所有这些服务都需要一些第三方的jar子。 此外,我的应用程序已经需要一些第三方的jar子。 现在,当我尝试从eclipse运行我的应用程序时,出现以下错误: 无法执行dex:方法ID不在[0,0xffff]:65536转换为Dalvik格式失败:无法执行dex:方法ID不在[0,0xffff]:65536 看来,这个错误发生是因为我的应用程序有太多的方法。 我相当肯定这些方法的大部分来自第三方jar,所以试图通过简化我的代码来解决这个问题是不现实的。 我在网上find了这两个build议。 将dex.force.jumbo=true添加到project.properties(并使用adt版本21)。 我这样做,但仍然得到错误。 按照下面的说明使用多个dex文件: http : //android-developers.blogspot.co.il/2011/07/custom-class-loading-in-dalvik.html 。 这似乎是唯一的select,但我不明白它是如何适用于我的情况。 问题是像Drive这样的服务有太多的依赖关系。 这个解决scheme是不是要求我修改驱动源来引用它的依赖时使用拐点? (这显然不是一种select)。 使用proguard缩小删除不使用的代码/方法。 用proguard导出我的应用程序确实有效,文档服务集成按照预期在> 4.0设备上工作。 但是,在2.3设备上testing时会引发classnotfound错误。 所以,我希望在这个问题上有一些build议。 选项2是我的情况的解决scheme吗? 我应该考虑另一个解决scheme吗?

Android Dalvik上可以使用哪些编程语言?

理论上,Dalvik执行任何虚拟机字节码,例如用编译器创build AspectJ的 ColdFusion的 Clojure的 Groovy的 JavaFX脚本 JRuby的 Jython的 犀牛 斯卡拉 Dalvik的字节码编译器是否已经可以用于除Java以外的其他语言?

无法在Eclipse中执行dex:GC开销限制

当我下载了Git项目OsmAnd并去编译它时,Eclipse返回了这些错误: [Dex Loader] Unable to execute dex: GC overhead limit exceeded [OsmAnd] Conversion to Dalvik format failed: Unable to execute dex: GC overhead limit exceeded 谷歌和Stackoverflow说,我必须更改eclipse.ini -Xms40m -Xmx384m 。 转换为Dalvik格式失败:无法执行dex:Java堆空间 。 我清理项目并重新启动Eclipse,但它没有帮助。 我发现这个链接: Android开发人员提示:“转换为Dalvik格式失败:无法执行dex:null”但是我不知道从我的项目中更改input.jar如果有人可以帮助,我可以发送项目给他们。