Articles of dalvik

JVM与Dalvik和/或ART有什么不同?

首先,我觉得我可能把这个问题的题目写得不好,但是我想不出合适的话,所以请随意提出一个编辑,我会做出来,这样问题就更具教育意义和相关性。 我知道javax.Swing根本不能用于Android项目,我已经接受了这个,学习了基于Android XML的UIdevise,但是出于好奇,我想知道为什么 。 我意识到电话的屏幕尺寸可能是Swing不能很好地处理的,但是如何阻止开发人员仅仅导入javax.Swing包(除了Android Studio之外根本就不让它发生)变形和可怕的Swing窗口可能在Android设备屏幕上? 我也意识到,AWT和SWT也必须导入,但同样的问题也适用于这些包。 我认为我对这个问题的理解可能真的来自于对Java虚拟机和Android等价物(Dalvik仍然使用,或者他们是否将冷火鸡转换为ART?)缺乏了解。 与往常一样,任何信息或阅读您可以提供的主题非常感谢。 我真的想更多地了解JVM,Dalvik和ART如何工作的基础知识。

究竟是什么原因导致了Android的“暂停”错误?

我目前无法debugging一些依赖本机库的Android代码。 特别是一个本地调用似乎倾向于这种“旋转中止”错误。 它通常performance如下: threadid=2: spin on suspend #2 threadid=48 (pcf=3) 到目前为止,我还没有能够确定这里有什么失败,除了这些消息之后,我的应用程序遇到一个SIGSTKFLT并退出。 每一次,第一个线程是GC,第二个线程是当前执行本地代码的任何线程。 与此消息一起打印的堆栈部分始终在堆栈顶部有一个本地方法。 当Dalvik抱怨这个事情到底发生了什么,我该如何开始debugging原因,以便我能解决这个问题? 编辑 :一个有趣的皱纹 – 原生开发者做了一些改变后,我现在也有时会看到下面的错误: PopFrame missed the break VM aborting Fatal signal 11 (SIGSEGV) at 0xdeadd00d (code=1) 线程转储在堆栈顶部显示我的本地方法也是非常奇怪,但是线程状态是RUNNABLE ,不是NATIVE – 这怎么可能?

Eclipse步入Android中的类

我有一个简单的Android项目,我正在尝试在Eclipse中进行debugging。 当我在debugging模式下运行它,并使用“Step Over”button时,它经常似乎要进入Android代码(我不希望这样做,就像Cdebugging器不会进入libc)。 我得到一个类似于以下的屏幕: Class File Editor Source not found: The JAR file blahblah/android.jar has no source attachment. You can attach the source by clicking attach source 我不希望它进入Android或Dalvik代码(即使我可以安装源代码),我只对我自己的个人代码感兴趣。

我怎样才能使用` – multi-dex`选项?

[2013-11-13 18:39:09 – XlApp] Dx trouble writing output: Too many method references: 66024; max is 65536. You may try using –multi-dex option. References by package: 13 java.lang 1 java.lang.reflect 5 java.util 1 javax.xml.namespace 66 org.apache.xmlbeans 19 org.apache.xmlbeans.impl.values 1 org.apache.xmlbeans.impl.xb.xmlschema 2500 org.openxmlformats.schemas.drawingml.x2006.chart 1430 org.openxmlformats.schemas.drawingml.x2006.chart.impl 8767 org.openxmlformats.schemas.drawingml.x2006.main 5258 org.openxmlformats.schemas.drawingml.x2006.main.impl 86 org.openxmlformats.schemas.drawingml.x2006.picture 33 org.openxmlformats.schemas.drawingml.x2006.picture.impl 745 org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing 417 org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.impl […]

Android系统是否包含JVM?

我知道Android系统包括Dalvik虚拟机(DVM)但是我不明白,如果Android系统包含JVM还是DVM是JVM的替代品? 谢谢

如何使用不受支持的例外以降低平台版本

我有一个DialogFragment为我的应用程序处理login和指纹身份validation。 此片段使用API​​ 23, KeyGenParameterSpec和KeyPermanentlyInvalidatedException所独有的两个类。 我一直觉得我可以使用这些类,只要在尝试初始化类之前检查构build版本( 这里概述): if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { … } else { … } 但似乎并非如此。 如果我尝试在API 20之前的版本上运行此代码,则Dalvik VM会拒绝整个类并引发VerifyError 。 尽pipe如此,这些代码在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 D/dalvikvm: […]

DalvikVM上的CLI在JNI lib上失败

我需要在Android上运行Java应用程序的命令行版本(是的,我知道这不是微不足道的)。 我试图启动它使用Dalvikvm,它实际上开始,但以后我的代码失败,因为它开始使用android.util.log并引发此exception。 java.lang.UnsatisfiedLinkError: println_native at android.util.Log.println_native(Native Method) at android.util.Log.i(Log.java:159) at org.slf4j.impl.AndroidLogger.info(AndroidLogger.java:151) at org.gihon.client.TunnelingClient.<init>(TunnelingClient.java:62) at org.gihon.client.CLI.main(CLI.java:95) at dalvik.system.NativeStart.main(Native Method) 我试着设置环境variables,我设置了LD_LIBRARY_PATH和BOOTCLASSPATHvariables。 我什至尝试用LD_PRELOAD预加载liblog,但没有解决这个问题。 看来,达尔维克姆设定环境的方式是错误的/不同的。

android中的invoke-virtual和invoke-direct有什么区别?

它说, invoke-virtual是调用虚拟方法,而invoke-direct是直接的方法。 但是我不清楚什么是“虚拟方法”,什么是“直接方法”? 换句话说,调用什么样的方法将会invoke-virtual ,哪种invoke-direct将直接invoke-direct ? 谁能给一些具体的例子? 提前致谢。

无法编译,无法执行dex,无法合并,非Jumbo指令

我需要一些帮助,因为我自己无法得到解决scheme,我已经阅读了大量的文章,并调查了很多,但没有解决scheme。 我有一个proyect有一些子项目(操作栏,滑动,脸谱等..),当我尝试编译它,我收到以下错误所有的时间。 [2013-07-31 14:44:06 – Dex Loader] Unable to execute dex: Cannot merge new index 67109 into a non-jumbo instruction! [2013-07-31 14:44:06 – ojiva] Conversion to Dalvik format failed: Unable to execute dex: Cannot merge new index 67109 into a non-jumbo instruction! 我使用最新的ADT和最新的工具(r22)与最新的SDK(18)的Eclipse。 我已经在我的project.properties上设置了dex.force.jumbo=true ,并且我已经尝试了set dex.force.jumbo=true 但没有幸运:(任何想法?

更新到ADT 14后,“转换为Dalvik格式失败,出现错误1”

在更新到最新的开发工具ADT 14之后,包含库项目的我的Android项目将不再运行产生错误: Dx UNEXPECTED TOP-LEVEL EXCEPTION: … already added: … … Conversion to Dalvik format failed with error 1 其他线程描述这个问题的解决scheme,包括删除和重新添加项目不起作用。