私はこれを読みました post here。ただし、minSdkVersion <24では、次のようなJava 8 Stream API機能を含むコードを実行できません。
List<Car> newCars = cars.stream()
.filter(s -> s.getColor().equals("red"))
.collect(Collectors.toList());
エラーメッセージのため、これは実行されません。
呼び出しには、APIレベル24(現在の最小値は15)が必要です:Java.util.Collection#stream
だから誰かが解決策を知っていますか?
APIレベルが24未満のJava8ストリームは使用できません。
ただし、ストリーム機能の一部をバックポートするライブラリがいくつかあります
https://github.com/aNNiMON/Lightweight-Stream-API
https://github.com/konmik/solid
https://sourceforge.net/projects/streamsupport/ (コメントで@sartoriusが言及)
[k3b 2019-05-23更新]
https://github.com/retrostreams/Android-retrostreams はAndroid Studio 3.x D8を活用するstreamsupportからのスピンオフであり、インターフェースのデフォルトを使用するツールチェーンの機能とJarファイルの境界を越えた静的メソッド。 CompletableFutureなど、他のAndroid-retroXXXへのリンクもあります。
DexGuard のリリース8.2以降、Java 8ストリームAPIをAndroidデバイス<APIレベル24でも使用できるようになりました。 streamsupport ライブラリを含める必要があり、DexGuardはすべてのJava 8ストリームAPI呼び出しを提供されたライブラリに変換します。追加の処理は不要で、開発者は提供されたJava 8ストリームAPIを使用して簡単にコーディングできます。依存関係も自動的に変換されるため、Java 8機能を備えたライブラリをAndroid開発にも使用できます。
この機能は、近い将来ProGuardにも含まれますので、ご期待ください。
編集:ベータ版が既に存在するProguard 6.1.0は、Java 8ストリームおよび時間APIのバックポートをサポートしています。