【问题标题】:Android APK crashes even gradle build finished successfullyAndroid APK 崩溃甚至 gradle build 成功完成
【发布时间】:2016-10-05 06:00:18
【问题描述】:

每次构建 APK 时都会出现以下错误; Gradle build 显示它已成功完成,但是在我的手机上安装 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

【问题讨论】:

  • 请先正确格式化您的问题。
  • 似乎找不到android运行时。你能分享你的gradle文件吗?你是在手机还是模拟器上运行它?
  • 我在我的手机上运行..Android 4.2.2,我尝试在具有 Android 5.0 的模拟器上运行相同
  • ArrayMap 是在 API 级别 19 中引入的?你在哪台设备上测试你的代码?
  • 我没有在课堂上使用 ArrayMap;我刚刚使用了具有启动画面的主活动和带有一些文本的关于我们页面。

标签: android apk dalvik


【解决方案1】:

android.util.ArrayMap 是在 API 级别 19 (ArrayMap) 中引入的。如果您在 Android 4.2.2 设备上运行代码,它将在您的设备上找不到此类,并且您的应用程序将崩溃。

您可以改用java.util.Map。它的性能不如 ArrayMap,但它在每个 Android 平台上都可用。

【讨论】:

  • 我尝试在 Android 5.0、6.0 中运行它,即使它在那里失败;在具有 API 级别 21 的模拟器中也得到相同的结果
  • 您是否尝试禁用 Instant Run。此外,您的支持库有点过时了。 24.2.1 可用。也许这有帮助。此外,如果不使用您的硬件上不可用的 API,我真的会检查一下。
【解决方案2】:

将 minSdkVersion 更改为 19

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

因为 ArrayMap 是在 API-Level 19 中引入的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多