我无法获得客户。 我是从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。
有什么想法吗?
答案 0 :(得分:2)
我遇到了完全相同的问题。正如s_noopy所说,https://github.com/Polidea/RxAndroidBle/issues/33为我解决了它。
问题是Java 8 lambdas不能与RxAndroidBle一起使用。您必须使用retrolambda,因为它兼容的API版本。这就是说明错误参数传递的神秘消息的原因。
在你的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 {
让我知道它是否能为您解决。