web-dev-qa-db-fra.com

Est-il possible d’utiliser l’API Java 8 Stream sur Android <24?)?

J'ai lu ceci post ici. Mais je ne peux toujours pas exécuter de code contenant Java 8 Fonctionnalités de l’API de diffusion telles que les suivantes sur minSdkVersion <24.

List<Car> newCars = cars.stream()
                        .filter(s -> s.getColor().equals("red"))
                        .collect(Collectors.toList());

Cela ne fonctionne pas à cause du message d'erreur

L'appel nécessite un niveau 24 (le minimum actuel est de 15): Java.util.Collection # stream

Alors quelqu'un connaît-il une solution?

76
unlimited101

Vous ne pouvez pas utiliser les flux Java8 au niveau de l'API <24.

Cependant, il existe des bibliothèques qui rétroportent certaines fonctionnalités du flux

https://github.com/aNNiMON/Lightweight-Stream-API

https://github.com/konmik/solid

https://sourceforge.net/projects/streamsupport/ (mentionné par @sartorius dans un commentaire)

[Mise à jour k3b 2019-05-23]

https://github.com/retrostreams/Android-retrostreams est une retombée de streamsupport qui tire parti de Android Studio 3.x D8/capacité de la chaîne d'outils de Desugar à utiliser méthodes par défaut et statiques d’interface entre les fichiers Jar et des liens vers d’autres périphériques Android-retroXXX, par exemple pour CompletableFuture.

50
Robert Estivill

Depuis la version 8.2 de DexGuard , il est possible d'utiliser l'API Java 8 flux également sur Android appareils <niveau API 24. Dans Pour ce faire, il faut inclure la bibliothèque streamsupport et DexGuard traduira tous les appels d'API de flux Java 8) vers la bibliothèque fournie. Aucune manipulation supplémentaire n'est nécessaire, et Les développeurs peuvent simplement coder en utilisant l’API fournie Java 8. Flux. Les dépendances sont également traduites automatiquement, il est donc possible d’utiliser des bibliothèques avec Java 8 fonctionnalités également pour = Android développement.

Cette fonctionnalité sera également intégrée à ProGuard dans un avenir proche, restez à l’écoute.

Edit: Proguard 6.1.0 pour lequel il existe déjà une version bêta prend en charge le backporting Java 8 API de flux et de temps.

10
T. Neidhart