1 dalvik не может найти методы, хотя они существуют в classes.dex

вопрос создан в Wed, May 8, 2019 12:00 AM

Запуская мой 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)

Я не ожидаю предупреждения souch, потому что методы перечислены в classes.dex

    
0
1 ответ                              1                         

Любой метод, на который есть ссылка (т. е. используемый командой invoke), будет "существовать" в файле dex. например будет запись в списке идентификаторов методов для этого метода. Это не значит, что сам метод существует.

Если вы посмотрите документацию по API для TypedArray , вы заметите, что метод getType () был добавлен только начиная с api 21. api 19/20 (kitkat) была последней версией платформы, которая включала dalvik, поэтому ваше устройство определенно меньше, чем api 21, и поэтому не будет иметь метод TypedArray.getType().

    
0
2019-05-08 18: 16: 44Z
  1. Большое спасибо, ваш ответ был полезным!
    2019-05-09 05: 12: 53Z
источник размещен Вот