java.lang.NoClassDefFoundError 在 Android 上 4.2.2 设备

java.lang.NoClassDefFoundError on Android 4.2.2 Devices

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

AndroidRuntime: FATAL EXCEPTION: main java.lang.NoClassDefFoundError: android/bluetooth/BluetoothGatt

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.bluetooth.BluetoothGatt" on path: /data/app/com.evva.aess.android.programmingdevice-1.apk

Android项目配置:

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

同时启用了 MultiDex,我的主应用程序扩展了 MultiDexApplication。

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

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

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