首页 > 解决方案 > Android 4.2.2 设备上的 java.lang.NoClassDefFoundError

问题描述

我有一个 Android 应用程序,需要实现蓝牙低功耗功能。BLE 功能应在 Android API 级别 > 26 (Android 8) 的设备上运行,但应用程序也应在 Android > 17 (Android 4.2) 的设备上启动。我已经在 Android 8 和 4.4 上测试了这个应用程序,没有任何问题。如果我让应用程序在装有 Android 4.2.2 的设备上运行,它会在启动后立即崩溃。日志如下所示:

AndroidRuntime:致命异常:主要 java.lang.NoClassDefFoundError:android/bluetooth/BluetoothGatt

引起:java.lang.ClassNotFoundException:在路径上找不到类“android.bluetooth.BluetoothGatt”:/data/app/com.evva.aess.android.programmingdevice-1.apk

安卓项目配置:

compileSdkVersion = 26
buildToolsVersion = '27.0.3'
minSdkVersion = 17
targetSdkVersion = 26

MultiDex 也已启用,我的主应用程序扩展了 MultiDexApplication。

是否需要配置proguard规则?我不知道如何解决这个问题,谢谢你的帮助。

标签: javaandroidbluetooth-lowenergynoclassdeffounderrorandroid-multidex

解决方案


从文档中可以看出,BluethoothGatt 是在 API 级别 18 中添加的:https ://developer.android.com/reference/android/bluetooth/BluetoothGatt 。

您当前的 minSDK 是 17。您必须更新您的 minSDK 或找到其他解决方案(例如 3rd 方库等)


推荐阅读