dalvik无法找到方法,尽管它们存在于classes.dex中

时间:2019-05-08 16:17:57

标签: android methods dalvik methodnotfound

在设备上启动android-apk时,dalvik抱怨找不到某些方法,尽管所有这些方法都包含在classes.dex中以供查看 apkanalyser dex软件包.... 这些方法来自平台基础android.jar

为什么达尔维克找不到它们?

背景: 这个APK是使用命令行工具构建的,没有gradle。 (基本了解流程) 平台完全是android-25 25.3.1 build_tools_version =“ 27.0.3”

dalvik消息:

I/dalvikvm(17763): Could not find method   android.content.res.TypedArray.getType, referenced from method android.support.v7.widget.TintTypedArray.getType
W/dalvikvm(17763): VFY: unable to resolve virtual method 535: Landroid/content/res/TypedArray;.getType (I)I
D/dalvikvm(17763): VFY: replacing opcode 0x6e at 0x0008

但包含在classes.dex中:

M d 1   1   133 android.support.v7.widget.TintTypedArray int getType(int)
M r 0   1   26  android.content.res.TypedArray int getType(int)

我不希望有太多警告,因为方法列在classes.dex

1 个答案:

答案 0 :(得分:0)

所引用的任何方法(即被调用指令使用)将“存在”于dex文件中。例如method id list中将有该方法的条目。这并不意味着该方法本身就存在。

如果您查看api documentation for TypedArray,则会注意到getType()方法仅是从api 21开始添加的。api 19/20(kitkat)是包含dalvik的最后一个平台版本,因此您的设备绝对小于api 21,因此将没有TypedArray.getType()方法。