2017-01-09 4 views
1

私はAndroid Developementで新しく、私は自分のアプリにBluetooth LE機能を実装しようとしています。 私はRXAndroidBLEを使ってアンドロイドプロジェクトを実行するのにいくつかの困難を抱えています。 このライブラリはラムダを使用しており、実行することができません。

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 
    defaultConfig { 
     applicationId "com.example.maxime.applicationtest" 
     minSdkVersion 18 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
     jackOptions { 
      enabled true 
     } 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:25.1.0' 
    testCompile 'junit:junit:4.12' 
    compile "com.polidea.rxandroidble:rxandroidble:1.1.0" 
} 

私はMainActivityで次のコードを実行しようとすると、エラーが表示されます:

protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 

 
     RxBleClient rxBleClient = RxBleClient.create(this); 
 

 
     Subscription scanSubscription = rxBleClient.scanBleDevices() 
 
       .subscribe(
 
         rxBleScanResult -> { 
 
          // Process scan result here. 
 
          Log.e("DEVICE", rxBleScanResult.getBleDevice().getName()); 
 
         }, 
 
         throwable -> { 
 
          // Handle an error here. 
 
         } 
 
       ); 
 

 
// When done, just unsubscribe. 
 
     scanSubscription.unsubscribe(); 
 
    }

FATAL EXCEPTION: Thread-4847 
    Process: com.example.maxime.applicationtest, PID: 27342 
     java.lang.NoSuchMethodError: No virtual method com_polidea_rxandroidble_internal_radio_RxBleRadioImpl$$Lambda$1_lambda$new$0()V in class Lcom/polidea/rxandroidble/internal/radio/RxBleRadioImpl; or its super classes (declaration of 'com.polidea.rxandroidble.internal.radio.RxBleRadioImpl' appears in /data/app/com.example.maxime.applicationtest-1/base.apk) 
     at com.polidea.rxandroidble.internal.radio.RxBleRadioImpl$$Lambda$1.run(Unknown Source) 
     at java.lang.Thread.run(Thread.java:818) 

私は私のGradleファイルを更新しました

なぜそれが間違っているのか分かりません。

誰も私を助けることができればそれは素晴らしいことです。 ありがとう!

答えて

0

私は最終的にjackOptionsを除去することにより、解決策を見つけました。 これは魅力のように機能します。

+1

は私のために動作しません。 jackOptionsを削除すると、jackOptionsを追加するよう指示されます。 'ジャックは、Java 8言語機能をサポートする必要があります。 Jackを有効にするか、sourceCompatibility JavaVersion.VERSION_1_8を削除してください。 – paakjis

0

もこの問題を抱えていました。しかし、jackOptionsを削除しても機能しませんでした。私のプロジェクトにretrolambdaを追加しなければならなかった。私のビルドのGradleは、次のようになります。

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

buildscript { 
    repositories { 
     mavenCentral() 
    } 

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

repositories { 
    mavenLocal() 
} 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.3" 
    defaultConfig { 
     applicationId "com.trump.islove" 
     minSdkVersion 18 
     targetSdkVersion 24 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:24.2.1' 
    compile "com.polidea.rxandroidble:rxandroidble:1.1.0" 
    compile 'com.jakewharton:butterknife:8.4.0' 
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0' 
    testCompile 'junit:junit:4.12' 
} 
0

あなたのbuild.gradleファイルに書き込む必要があります。

apply plugin: 'me.tatarka.retrolambda' 

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'me.tatarka:gradle-retrolambda:3.3.1' 
    } 
} 
関連する問題