Android APK вылетает даже при успешном завершении сборки gradle

#android #apk #dalvik

#Android #Apk #dalvik

Вопрос:

Я получаю приведенную ниже ошибку каждый раз, когда создаю свой APK; Сборка Gradle показывает, что это было выполнено успешно, но при установке APK на мой телефон он каждый раз выходит из строя

 10-04 22:52:53.848 9297-9297/com.usfca.studentrecordsverify E/Trace: error opening trace file: No such file or directory (2)
10-04 22:52:53.908 9297-9297/com.usfca.studentrecordsverify E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.android.tools.fd.runtime.MonkeyPatcher.monkeyPatchExistingResources
10-04 22:52:53.908 9297-9297/com.usfca.studentrecordsverify W/dalvikvm: VFY: unable to resolve check-cast 1786 (Landroid/util/ArrayMap;) in Lcom/android/tools/fd/runtime/MonkeyPatcher;
10-04 22:52:53.908 9297-9297/com.usfca.studentrecordsverify E/dalvikvm: Could not find class 'android.util.ArrayMap', referenced from method com.android.tools.fd.runtime.MonkeyPatcher.pruneResourceCache
10-04 22:52:53.908 9297-9297/com.usfca.studentrecordsverify W/dalvikvm: VFY: unable to resolve const-class 1786 (Landroid/util/ArrayMap;) in Lcom/android/tools/fd/runtime/MonkeyPatcher;
10-04 22:52:53.928 9297-9297/com.usfca.studentrecordsverify W/dalvikvm: VFY: unable to resolve virtual method 437: Landroid/content/Context;.getSystemService (Ljava/lang/Class;)Ljava/lang/Object;
10-04 22:52:53.928 9297-9297/com.usfca.studentrecordsverify W/dalvikvm: VFY: unable to resolve virtual method 231: Landroid/app/Activity;.stopLockTask ()V
10-04 22:52:53.928 9297-9297/com.usfca.studentrecordsverify E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.usfca.studentrecordsverify.MainActivity.access$super
10-04 22:52:53.928 9297-9297/com.usfca.studentrecordsverify W/dalvikvm: VFY: unable to resolve check-cast 226 (Landroid/os/PersistableBundle;) in Lcom/usfca/studentrecordsverify/MainActivity;
10-04 22:52:53.928 9297-9297/com.usfca.studentrecordsverify W/dalvikvm: VFY: unable to resolve virtual method 419: Landroid/content/Context;.getColorStateList (I)Landroid/content/res/ColorStateList;
10-04 22:52:53.928 9297-9297/com.usfca.studentrecordsverify W/dalvikvm: VFY: unable to resolve virtual method 154: Landroid/app/Activity;.onVisibleBehindCanceled ()V
10-04 22:52:53.928 9297-9297/com.usfca.studentrecordsverify W/dalvikvm: VFY: unable to resolve virtual method 158: Landroid/app/Activity;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
10-04 22:52:53.928 9297-9297/com.usfca.studentrecordsverify E/dalvikvm: Could not find class 'android.os.PersistableBundle', referenced from method com.usfca.studentrecordsverify.MainActivity.access$super
  

Вот build.gradle

Комментарии:

1. пожалуйста, сначала правильно отформатируйте свой вопрос.

2. Кажется, что среда выполнения Android не может быть найдена. Можете ли вы поделиться своим файлом gradle? Вы используете это на телефоне или эмуляторе?

3. Я работал на своем телефоне.. Android 4.2.2, я попытался запустить то же самое на эмуляторе с Android 5.0

4. ArrayMap был представлен с API-уровнем 19? На каком устройстве вы тестируете свой код?

5. Однако я не использую ArrayMap в своем классе; Я просто использовал Main Activity с заставкой и страницей о нас с некоторыми текстами.

Ответ №1:

android.util.ArrayMap был представлен с API-Level 19 (ArrayMap). Если вы запустите код на устройстве Android 4.2.2, он не найдет этот класс на вашем устройстве, и ваше приложение выйдет из строя.

Вместо этого вы можете использовать a java.util.Map . Он не такой производительный, как ArrayMap, но доступен на каждой платформе Android.

Комментарии:

1. Я попытался запустить его в Android 5.0, 6.0, даже там он терпит неудачу; Также то же самое происходит в эмуляторах с уровнем API 21

2. Вы пытались отключить мгновенный запуск. Кроме того, ваши библиотеки поддержки немного устарели. Доступен 24.2.1. Возможно, это помогает. Кроме того, я бы действительно проверил, не используете ли вы API, который недоступен на вашем оборудовании.

Ответ №2:

измените minSdkVersion на 19

 defaultConfig {
   applicationId "com.usfca.studentrecordsverification"
   minSdkVersion 19
   targetSdkVersion 23
   versionCode 1
   versionName "1.0"
}
  

Потому что ArrayMap был представлен с API-уровнем 19!