Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android dalvik VM VFY代码的含义_Android_Dalvik - Fatal编程技术网

Android dalvik VM VFY代码的含义

Android dalvik VM VFY代码的含义,android,dalvik,Android,Dalvik,在运行Android应用程序时,是否有人可以向我解释以下警告的含义(警告按给定顺序输出): 应用程序似乎运行正常,但我需要了解这个问题,因为我们有更复杂的应用程序存在类似错误,导致dalvikvm崩溃。问题似乎是,MissDatabaseModuleDaiMPL类试图访问AbstractDatabaseModuleDao.logger字段,但无法访问,由于访问限制(即私有、受保护等)。在这种情况下,访问此字段的sget对象操作码(操作码0x62)将替换为引发验证异常的操作码,如果执行该操作码,可

在运行Android应用程序时,是否有人可以向我解释以下警告的含义(警告按给定顺序输出):


应用程序似乎运行正常,但我需要了解这个问题,因为我们有更复杂的应用程序存在类似错误,导致dalvikvm崩溃。

问题似乎是,
MissDatabaseModuleDaiMPL
类试图访问
AbstractDatabaseModuleDao.logger
字段,但无法访问,由于访问限制(即私有、受保护等)。在这种情况下,访问此字段的sget对象操作码(操作码0x62)将替换为引发验证异常的操作码,如果执行该操作码,可能会导致运行时崩溃


此外,最后一条消息引用了
MiscDatabaseModuleDaoImpl.getSequenceNextVal
方法中的死代码。这是无害的-在运行时不会引起任何问题。然而,找出死代码的确切内容并将其删除并不是一个坏主意。可以使用baksmali和--code offset选项反汇编应用程序,然后查看该方法的反汇编。--code offset选项将在包含偏移量的每条指令之前放置注释。根据错误消息,从0x46到0x6e的偏移量是死代码。附近还应该有
.line
指令,这些指令将是原始java文件中相应的行号。

感谢您的深入了解。实际上,AbstractDatabaseModuleDao声明了一个私有静态记录器,但是这个抽象类也从另一个声明了受保护静态记录器的抽象类扩展而来。达尔维克姆不喜欢这样。另一个结果是getSequenceNextVal方法中的一些代码,称为logger。然而,dalvikvm替换了这段代码,并导致它成为一段死代码(我认为)。只需删除静态记录器声明即可解决这两个问题。谢谢,是的。听起来不错。当访问记录器的操作码被替换为抛出VerificationError的操作码时,紧接着的代码将变为死代码。@JesusFreke,我也遇到了同样的问题,我在过去10到15天里一直在尝试解决这个问题,但我不知道如何解决。我得到了这种类型的异常=(“12-30 22:40:13.202:I/dalvikvm(400):找不到方法com.anm.cms.core.util.AES128Bit.encrypt,从方法com.w2i.MainActivity引用。onCreate@JesusFreke,12-30 22:40:13.213:D/dalvikvm(400):VFY:在0x00a6处替换操作码0x77 12-30 22:40:13.232:D/dalvikvm(400):VFY:Lcom/w2i/MainActivity;中的死代码0x00a9-00d7.onCreate(Landroid/os/Bundle;)V 12-30 22:40:13.352:D/AndroidRuntime(400):关闭VM@JesusFreke,你能告诉我如何在Android中解决这个问题吗。
04-17 15:29:11.693: I/dalvikvm(4442): DexOpt: access denied from Lcom/kirona/iclient/db/core/services/impl/MiscDatabaseModuleDaoImpl; to field Lcom/kirona/iclient/database/common/impl/AbstractDatabaseModuleDao;.logger
04-17 15:29:11.653: W/dalvikvm(4442): VFY: unable to resolve static field 30 (logger) in Lcom/kirona/iclient/db/core/services/impl/MiscDatabaseModuleDaoImpl;
04-17 15:29:11.653: D/dalvikvm(4442): VFY: replacing opcode 0x62 at 0x0001    
04-17 15:29:11.693: D/dalvikvm(4442): VFY: dead code 0x0046-006e in Lcom/kirona/iclient/db/core/services/impl/MiscDatabaseModuleDaoImpl;.getSequenceNextVal (Ljava/lang/String;)J