Новый ответ
Кажется, Android Studio 4.0 (в настоящее время на Канарских островах) будет поддерживать библиотеки десагеринга, поэтому стоит попробовать эту версию:
AndroidТеперь Studio включает поддержку использования ряда API-интерфейсов на языке Java 8, не требуя минимального уровня API для вашего приложения.
Благодаря процессу, называемому desugaring, компилятор DEX, D8, в Android Studio 3.0 и выше уже обеспечил существенную поддержкуподдержка функций языка Java 8 (таких как лямбда-выражения, методы интерфейса по умолчанию, попытка использования ресурсов и т. д.). В Android Studio 4.0 механизм десагеринга был расширен, чтобы можно было десагарировать API языка Java. Это означает, что теперь вы можете включать стандартные языковые API, которые были доступны только в последних выпусках Android (например, java.util.streams), в приложения, поддерживающие более старые версии Android.
В API поддерживается следующий набор APIэтот выпуск:
- Последовательные потоки (java.util.stream)
- Подмножество java.time
- java.util.function
- Недавние добавления к java.util. {Карта, Коллекция, Компаратор}
- Необязательные (java.util.Optional, java.util.OptionalInt и java.util.OptionalDouble) и некоторые другие новые классы, полезные с помощью вышеуказанных API.
- Некоторые дополнения к java.util.concurrent.atomic (новые методы для AtomicInteger, AtomicLong и AtomicReference)
- ConcurrentHashMap (с исправлениями ошибок для Android 5.0)
Старый ответ
Android 6 не поддерживает лямбды Java 8. Вы можете использовать лямбда-выражения в Android Studio, но если ваша зависимость предварительно скомпилирована, кажется, что она все еще не работает на старых SDK. В вашем случае это происходит из-за ссылки на метод, использованной в JChannel
.
. Есть по крайней мере два способа решения этой проблемы:
- Выполните некоторое переплетение вашей зависимости от jar, чтобы перевестибайт-код для Java 6 и вручную добавьте
.jar
в папку /libs
. - Загрузите исходный код JGroups в виде модуля библиотеки и скомпилируйте его в Android Studio. Вы также можете сделать его подмодулем git.
Я думал, что Proguard или R8 исправят это, но я попытался добавить их в пример проекта, которым вы поделились на github, безрезультатно.