2016-08-12 19 views
2

我無法獲取客戶端。 我開始在Android開發,所以也許這是一個配置/新手的錯誤,但沒有我試過/搜索的作品。 每次我稱之爲「RxBleClient.create(上下文);」,我得到以下錯誤:在RxAndroidBLE上獲取客戶端時出錯

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上。

任何想法?

+0

沒有遇到過這個。有人在這裏有類似的問題:https://github.com/Polidea/RxAndroidBle/issues/33也許增加Retrolambda會有幫助嗎? –

+0

你能否包含你的'build.gradle'文件?似乎項目的設置存在問題。 –

回答

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 { 

讓我知道,如果它解決它。