在设备上启动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
中答案 0 :(得分:0)
所引用的任何方法(即被调用指令使用)将“存在”于dex文件中。例如method id list中将有该方法的条目。这并不意味着该方法本身就存在。
如果您查看api documentation for TypedArray,则会注意到getType()方法仅是从api 21开始添加的。api 19/20(kitkat)是包含dalvik的最后一个平台版本,因此您的设备绝对小于api 21,因此将没有TypedArray.getType()
方法。