2

我无法获得客户。我开始进行 Android 开发,所以可能是配置/新手错误,但我尝试过/搜索过的都没有。每次我调用“RxBleClient.create(context);”时,我都会收到以下错误:

FATAL EXCEPTION: Thread-34217
Process: es.ralcaidev.arduinobt, PID: 15488
java.lang.IncompatibleClassChangeError: The method 
'void com.polidea.rxandroidble.internal.radio.RxBleRadioImpl.com_polidea_rxandroidble_internal_radio_RxBleRadioImpl_lambda$new$0()' 
was expected to be of type direct but instead was found to be of type virtual 
(declaration of 'com.polidea.rxandroidble.internal.radio.RxBleRadioImpl' 
appears in /data/app/es.ralcaidev.arduinobt-2/base.apk)
at com.polidea.rxandroidble.internal.radio.RxBleRadioImpl.access$lambda$0(Unknown)
at com.polidea.rxandroidble.internal.radio.RxBleRadioImpl$$Lambda$1.run(Unknown)
at java.lang.Thread.run(Thread.java:818)

我已经切换到 JDK 1.8 并在 gradle 上启用了 Jack。

有任何想法吗?

4

1 回答 1

2

我有同样的问题。正如 s_noopy 所说,https://github.com/Polidea/RxAndroidBle/issues/33为我解决了这个问题。

问题是 Java 8 lambda 不适用于 RxAndroidBle。由于它兼容的 API 版本,您必须使用 retrolambda。这就是说明传递了错误参数的神秘消息的原因。

在您的 build.gradle 文件中,删除 jackOptions 闭包(我相信它可以在闭包 defaultConfig 中找到)并使其看起来像这样:

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'me.tatarka:gradle-retrolambda:3.2.5'
    }
}

android {

让我知道它是否可以为您解决。

于 2016-08-22T18:20:34.470 回答