java.lang.NoSuchMethodError во внешней зависимости java внутри зависимости java от Kotlin на Android 5 - PullRequest
3 голосов
/ 06 ноября 2019

Я реализую внешнюю JAVA -зависимость от репозитория, который содержит другую внешнюю зависимость ( ретро поток ) от приложения для Android на Kotlin, в результате я получаю сбой на android 5 от java.lang.NoSuchMethodError: Нет статического метода согласно трассировке внутри * JAVA -библиотеки (трасса прилагается ниже). Проблема возникает в классе Stream в библиотеке retro stream (метод " из "). Я проверил, что эта библиотека существует во внешних зависимостях и все классы и методы видны из кода, и, что самое интересное, она не падает на устройствах android> = 7 .

Iпопытался явно вызвать метод из кода kotlin - все в порядке.

Versions: 
Kotlin                   1.3.50 
Gradle plugin            3.4.2
Gradle                   5.4.1
Android studio           3.5

Код проблемы:

    EmptyUtils.getLastNotNullGotValue(Supplier { "" })

E / AndroidRuntime (5699): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: main E / AndroidRuntime (5699): Процесс: com.jetruby.kotlindslgradleexample, PID: 5699 E / AndroidRuntime (5699): java.lang.NoSuchMethodError: Нет статического метода ([Ljava / lang / Object;)Ljava9 / Util / поток / поток;в классе Ljava9 / util / stream / Stream;или его суперклассы (объявление 'java9.util.stream.Stream' появляется в /data/app/com.jetruby.kotlindslgradleexample-2/base.apk) E / AndroidRuntime (5699): на ru.m4bank.mpos.service.network.utils.EmptyUtils.getLastNotNullGotValueOrDefault (EmptyUtils.java:40) E / AndroidRuntime (5699): в ru.m4bank.mpos.service.network.utils.EmptyUtils.getLastNotNullGotValue (EmptyUtils.javauntime):): at com.jetruby.kotlindslgradleexample.MainActivity.onCreate (MainActivity.kt: 33) E / AndroidRuntime (5699): в android.app.Activity.performCreate (Activity.java:5990) E / AndroidRuntime (5699): в Android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1106) E / AndroidRuntime (5699): в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2278) E / AndroidRuntime (5699): в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) E / AndroidRuntime (5699): на android.app.ActivityThread.access $ 800 (ActivityThread.java:151) E / AndroidRuntime (5699): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1303) E / AndroidRuntime (5699): на android.os.Handler.dispatchMessage (Handler.java:102) E / AndroidRuntime (5699): на android.os. Looper.loop (Looper.java:135) E / AndroidRuntime (5699): на android.app.ActivityThread.main (ActivityThread.java:5254) E / AndroidRuntime (5699): на java.lang.reflect.Method.invoke (Собственный метод) E / AndroidRuntime (5699): в java.lang.reflect.Method.invoke (Method.java:372) E / AndroidRuntime (5699): в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java: 903) E / AndroidRuntime (5699): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:698)

Поэкспериментировав с различными вариантами сборки, я обнаружил, чтоесли вы реализуете JAVA -зависимость локально (по файлам), то сбой на 5-м андроиде не будет !! . Кроме того, падение не происходит, если компилируется из JAVA , а не из kotlin . И это относится только к статическим методам в интерфейсах .

На рисунке ниже представлены 2 варианта зависимости (первый, который я скопировал из кэша gradle , когда поднял2-й и реализовать его локально как файл , второй просто извлеченный из хранилища ).

Варианты реализации

Результаты:

On android <7:  1-st variant - all ok, 2-nd variant - crashes.
On android >=7 - 1,2 variants - ok

Я декомпилировал приложение и заметил, что из kotlin статические методы из интерфейсов собраны в отдельный класс (вспомогательный внутренний класс ClassName.CC созданные и статические методы помещаются в него). Таким образом, при реализации зависимостей из репозитория декомпилированный внешний класс ссылается на оригинальный класс и оригинальный метод, а при реализации из локального источника (скопированоиз поднятого репозитория в папку libs), это относится к вспомогательному XX.CC . Есть подозрение, что причина java.lang.NoSuchMethodError: Нет статического метода .

Декомпилированные классы класса задачи

Приведенный ниже код является декомпилированным кодом класса «helper» с «отсутствующим» методом. Он одинаков как для успешных, так и для неудачных сборок:

    .class public final synthetic Ljava9/util/stream/Stream$-CC;
        .super Ljava/lang/Object;
        .source "Stream.java"


        # direct methods
        .method public static $default$dropWhile(Ljava9/util/stream/Stream;Ljava9/util/function/Predicate;)Ljava9/util/stream/Stream;
            .locals 3
            .param p0, "_this"    # Ljava9/util/stream/Stream;
            .annotation system Ldalvik/annotation/Signature;
                value = {
                    "(",
                    "Ljava9/util/function/Predicate<",
                    "-TT;>;)",
                    "Ljava9/util/stream/Stream<",
                    "TT;>;"
                }
            .end annotation

            .line 630
            .local p0, "this":Ljava9/util/stream/Stream;, "Ljava9/util/stream/Stream<TT;>;"
            .local p1, "predicate":Ljava9/util/function/Predicate;, "Ljava9/util/function/Predicate<-TT;>;"
            invoke-static {p1}, Ljava9/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;

            .line 633
            new-instance v0, Ljava9/util/stream/WhileOps$UnorderedWhileSpliterator$OfRef$Dropping;

            .line 634
            invoke-interface {p0}, Ljava9/util/stream/Stream;->spliterator()Ljava9/util/Spliterator;

            move-result-object v1

            const/4 v2, 0x1

            invoke-direct {v0, v1, v2, p1}, Ljava9/util/stream/WhileOps$UnorderedWhileSpliterator$OfRef$Dropping;-><init>(Ljava9/util/Spliterator;ZLjava9/util/function/Predicate;)V

            .line 635
            invoke-interface {p0}, Ljava9/util/stream/Stream;->isParallel()Z

            move-result v1

            .line 633
            invoke-static {v0, v1}, Ljava9/util/stream/StreamSupport;->stream(Ljava9/util/Spliterator;Z)Ljava9/util/stream/Stream;

            move-result-object v0

            .line 635
            invoke-static {p0}, Ljava9/util/stream/StreamSupport;->closeHandler(Ljava9/util/stream/BaseStream;)Ljava/lang/Runnable;

            move-result-object v1

            invoke-interface {v0, v1}, Ljava9/util/stream/Stream;->onClose(Ljava/lang/Runnable;)Ljava9/util/stream/BaseStream;

            move-result-object v0

            check-cast v0, Ljava9/util/stream/Stream;

            return-object v0
        .end method

        .method public static $default$takeWhile(Ljava9/util/stream/Stream;Ljava9/util/function/Predicate;)Ljava9/util/stream/Stream;
            .locals 3
            .param p0, "_this"    # Ljava9/util/stream/Stream;
            .annotation system Ldalvik/annotation/Signature;
                value = {
                    "(",
                    "Ljava9/util/function/Predicate<",
                    "-TT;>;)",
                    "Ljava9/util/stream/Stream<",
                    "TT;>;"
                }
            .end annotation

            .line 564
            .local p0, "this":Ljava9/util/stream/Stream;, "Ljava9/util/stream/Stream<TT;>;"
            .local p1, "predicate":Ljava9/util/function/Predicate;, "Ljava9/util/function/Predicate<-TT;>;"
            invoke-static {p1}, Ljava9/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;

            .line 567
            new-instance v0, Ljava9/util/stream/WhileOps$UnorderedWhileSpliterator$OfRef$Taking;

            .line 568
            invoke-interface {p0}, Ljava9/util/stream/Stream;->spliterator()Ljava9/util/Spliterator;

            move-result-object v1

            const/4 v2, 0x1

            invoke-direct {v0, v1, v2, p1}, Ljava9/util/stream/WhileOps$UnorderedWhileSpliterator$OfRef$Taking;-><init>(Ljava9/util/Spliterator;ZLjava9/util/function/Predicate;)V

            .line 569
            invoke-interface {p0}, Ljava9/util/stream/Stream;->isParallel()Z

            move-result v1

            .line 567
            invoke-static {v0, v1}, Ljava9/util/stream/StreamSupport;->stream(Ljava9/util/Spliterator;Z)Ljava9/util/stream/Stream;

            move-result-object v0

            .line 569
            invoke-static {p0}, Ljava9/util/stream/StreamSupport;->closeHandler(Ljava9/util/stream/BaseStream;)Ljava/lang/Runnable;

            move-result-object v1

            invoke-interface {v0, v1}, Ljava9/util/stream/Stream;->onClose(Ljava/lang/Runnable;)Ljava9/util/stream/BaseStream;

            move-result-object v0

            check-cast v0, Ljava9/util/stream/Stream;

            return-object v0
        .end method

        .method public static builder()Ljava9/util/stream/Stream$Builder;
            .locals 1
            .annotation system Ldalvik/annotation/Signature;
                value = {
                    "<T:",
                    "Ljava/lang/Object;",
                    ">()",
                    "Ljava9/util/stream/Stream$Builder<",
                    "TT;>;"
                }
            .end annotation

            .line 1148
            new-instance v0, Ljava9/util/stream/Streams$StreamBuilderImpl;

            invoke-direct {v0}, Ljava9/util/stream/Streams$StreamBuilderImpl;-><init>()V

            return-object v0
        .end method

        .method public static concat(Ljava9/util/stream/Stream;Ljava9/util/stream/Stream;)Ljava9/util/stream/Stream;
            .locals 3
            .annotation system Ldalvik/annotation/Signature;
                value = {
                    "<T:",
                    "Ljava/lang/Object;",
                    ">(",
                    "Ljava9/util/stream/Stream<",
                    "+TT;>;",
                    "Ljava9/util/stream/Stream<",
                    "+TT;>;)",
                    "Ljava9/util/stream/Stream<",
                    "TT;>;"
                }
            .end annotation

            .line 1387
            .local p0, "a":Ljava9/util/stream/Stream;, "Ljava9/util/stream/Stream<+TT;>;"
            .local p1, "b":Ljava9/util/stream/Stream;, "Ljava9/util/stream/Stream<+TT;>;"
            invoke-static {p0}, Ljava9/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;

            .line 1388
            invoke-static {p1}, Ljava9/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;

            .line 1391
            new-instance v0, Ljava9/util/stream/Streams$ConcatSpliterator$OfRef;

            .line 1392
            invoke-interface {p0}, Ljava9/util/stream/Stream;->spliterator()Ljava9/util/Spliterator;

            move-result-object v1

            invoke-interface {p1}, Ljava9/util/stream/Stream;->spliterator()Ljava9/util/Spliterator;

            move-result-object v2

            invoke-direct {v0, v1, v2}, Ljava9/util/stream/Streams$ConcatSpliterator$OfRef;-><init>(Ljava9/util/Spliterator;Ljava9/util/Spliterator;)V

            .line 1393
            .local v0, "split":Ljava9/util/Spliterator;, "Ljava9/util/Spliterator<TT;>;"
            invoke-interface {p0}, Ljava9/util/stream/Stream;->isParallel()Z

            move-result v1

            if-nez v1, :cond_1

            invoke-interface {p1}, Ljava9/util/stream/Stream;->isParallel()Z

            move-result v1

            if-eqz v1, :cond_0

            goto :goto_0

            :cond_0
            const/4 v1, 0x0

            goto :goto_1

            :cond_1
            :goto_0
            const/4 v1, 0x1

            :goto_1
            invoke-static {v0, v1}, Ljava9/util/stream/StreamSupport;->stream(Ljava9/util/Spliterator;Z)Ljava9/util/stream/Stream;

            move-result-object v1

            .line 1394
            .local v1, "stream":Ljava9/util/stream/Stream;, "Ljava9/util/stream/Stream<TT;>;"
            invoke-static {p0, p1}, Ljava9/util/stream/Streams;->composedClose(Ljava9/util/stream/BaseStream;Ljava9/util/stream/BaseStream;)Ljava/lang/Runnable;

            move-result-object v2

            invoke-interface {v1, v2}, Ljava9/util/stream/Stream;->onClose(Ljava/lang/Runnable;)Ljava9/util/stream/BaseStream;

            move-result-object v2

            check-cast v2, Ljava9/util/stream/Stream;

            return-object v2
        .end method

        .method public static empty()Ljava9/util/stream/Stream;
            .locals 2
            .annotation system Ldalvik/annotation/Signature;
                value = {
                    "<T:",
                    "Ljava/lang/Object;",
                    ">()",
                    "Ljava9/util/stream/Stream<",
                    "TT;>;"
                }
            .end annotation

            .line 1158
            invoke-static {}, Ljava9/util/Spliterators;->emptySpliterator()Ljava9/util/Spliterator;

            move-result-object v0

            const/4 v1, 0x0

            invoke-static {v0, v1}, Ljava9/util/stream/StreamSupport;->stream(Ljava9/util/Spliterator;Z)Ljava9/util/stream/Stream;

            move-result-object v0

            return-object v0
        .end method

        .method public static generate(Ljava9/util/function/Supplier;)Ljava9/util/stream/Stream;
            .locals 3
            .annotation system Ldalvik/annotation/Signature;
                value = {
                    "<T:",
                    "Ljava/lang/Object;",
                    ">(",
                    "Ljava9/util/function/Supplier<",
                    "+TT;>;)",
                    "Ljava9/util/stream/Stream<",
                    "TT;>;"
                }
            .end annotation

            .line 1345
            .local p0, "s":Ljava9/util/function/Supplier;, "Ljava9/util/function/Supplier<+TT;>;"
            invoke-static {p0}, Ljava9/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;

            .line 1346
            new-instance v0, Ljava9/util/stream/StreamSpliterators$InfiniteSupplyingSpliterator$OfRef;

            const-wide v1, 0x7fffffffffffffffL

            invoke-direct {v0, v1, v2, p0}, Ljava9/util/stream/StreamSpliterators$InfiniteSupplyingSpliterator$OfRef;-><init>(JLjava9/util/function/Supplier;)V

            const/4 v1, 0x0

            invoke-static {v0, v1}, Ljava9/util/stream/StreamSupport;->stream(Ljava9/util/Spliterator;Z)Ljava9/util/stream/Stream;

            move-result-object v0

            return-object v0
        .end method

        .method public static iterate(Ljava/lang/Object;Ljava9/util/function/Predicate;Ljava9/util/function/UnaryOperator;)Ljava9/util/stream/Stream;
            .locals 8
            .annotation system Ldalvik/annotation/Signature;
                value = {
                    "<T:",
                    "Ljava/lang/Object;",
                    "S:TT;>(TS;",
                    "Ljava9/util/function/Predicate<",
                    "TS;>;",
                    "Ljava9/util/function/UnaryOperator<",
                    "TS;>;)",
                    "Ljava9/util/stream/Stream<",
                    "TT;>;"
                }
            .end annotation

            .line 1287
            .local p0, "seed":Ljava/lang/Object;, "TS;"
            .local p1, "hasNext":Ljava9/util/function/Predicate;, "Ljava9/util/function/Predicate<TS;>;"
            .local p2, "next":Ljava9/util/function/UnaryOperator;, "Ljava9/util/function/UnaryOperator<TS;>;"
            invoke-static {p2}, Ljava9/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;

            .line 1288
            invoke-static {p1}, Ljava9/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;

            .line 1289
            new-instance v7, Ljava9/util/stream/Stream$2;

            const-wide v1, 0x7fffffffffffffffL

            const/16 v3, 0x410

            move-object v0, v7

            move-object v4, p2

            move-object v5, p0

            move-object v6, p1

            invoke-direct/range {v0 .. v6}, Ljava9/util/stream/Stream$2;-><init>(JILjava9/util/function/UnaryOperator;Ljava/lang/Object;Ljava9/util/function/Predicate;)V

            .line 1331
            .local v0, "spliterator":Ljava9/util/Spliterator;, "Ljava9/util/Spliterator<TT;>;"
            const/4 v1, 0x0

            invoke-static {v0, v1}, Ljava9/util/stream/StreamSupport;->stream(Ljava9/util/Spliterator;Z)Ljava9/util/stream/Stream;

            move-result-object v1

            return-object v1
        .end method

        .method public static iterate(Ljava/lang/Object;Ljava9/util/function/UnaryOperator;)Ljava9/util/stream/Stream;
            .locals 7
            .annotation system Ldalvik/annotation/Signature;
                value = {
                    "<T:",
                    "Ljava/lang/Object;",
                    "S:TT;>(TS;",
                    "Ljava9/util/function/UnaryOperator<",
                    "TS;>;)",
                    "Ljava9/util/stream/Stream<",
                    "TT;>;"
                }
            .end annotation

            .line 1224
            .local p0, "seed":Ljava/lang/Object;, "TS;"
            .local p1, "f":Ljava9/util/function/UnaryOperator;, "Ljava9/util/function/UnaryOperator<TS;>;"
            invoke-static {p1}, Ljava9/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;

            .line 1225
            new-instance v6, Ljava9/util/stream/Stream$1;

            const-wide v1, 0x7fffffffffffffffL

            const/16 v3, 0x410

            move-object v0, v6

            move-object v4, p1

            move-object v5, p0

            invoke-direct/range {v0 .. v5}, Ljava9/util/stream/Stream$1;-><init>(JILjava9/util/function/UnaryOperator;Ljava/lang/Object;)V

            .line 1244
            .local v0, "spliterator":Ljava9/util/Spliterator;, "Ljava9/util/Spliterator<TT;>;"
            const/4 v1, 0x0

            invoke-static {v0, v1}, Ljava9/util/stream/StreamSupport;->stream(Ljava9/util/Spliterator;Z)Ljava9/util/stream/Stream;

            move-result-object v1

            return-object v1
        .end method

        .method public static of(Ljava/lang/Object;)Ljava9/util/stream/Stream;
            .locals 2
            .annotation system Ldalvik/annotation/Signature;
                value = {
                    "<T:",
                    "Ljava/lang/Object;",
                    ">(TT;)",
                    "Ljava9/util/stream/Stream<",
                    "TT;>;"
                }
            .end annotation

            .line 1169
            .local p0, "t":Ljava/lang/Object;, "TT;"
            new-instance v0, Ljava9/util/stream/Streams$StreamBuilderImpl;

            invoke-direct {v0, p0}, Ljava9/util/stream/Streams$StreamBuilderImpl;-><init>(Ljava/lang/Object;)V

            const/4 v1, 0x0

            invoke-static {v0, v1}, Ljava9/util/stream/StreamSupport;->stream(Ljava9/util/Spliterator;Z)Ljava9/util/stream/Stream;

            move-result-object v0

            return-object v0
        .end method

        .method public static varargs of([Ljava/lang/Object;)Ljava9/util/stream/Stream;
            .locals 1
            .annotation system Ldalvik/annotation/Signature;
                value = {
                    "<T:",
                    "Ljava/lang/Object;",
                    ">([TT;)",
                    "Ljava9/util/stream/Stream<",
                    "TT;>;"
                }
            .end annotation

            .line 1196
            .local p0, "values":[Ljava/lang/Object;, "[TT;"
            invoke-static {p0}, Ljava9/util/J8Arrays;->stream([Ljava/lang/Object;)Ljava9/util/stream/Stream;

            move-result-object v0

            return-object v0
        .end method

        .method public static ofNullable(Ljava/lang/Object;)Ljava9/util/stream/Stream;
            .locals 2
            .annotation system Ldalvik/annotation/Signature;
                value = {
                    "<T:",
                    "Ljava/lang/Object;",
                    ">(TT;)",
                    "Ljava9/util/stream/Stream<",
                    "TT;>;"
                }
            .end annotation

            .line 1183
            .local p0, "t":Ljava/lang/Object;, "TT;"
            if-nez p0, :cond_0

            invoke-static {}, Ljava9/util/stream/Stream$-CC;->empty()Ljava9/util/stream/Stream;

            move-result-object v0

            goto :goto_0

            :cond_0
            new-instance v0, Ljava9/util/stream/Streams$StreamBuilderImpl;

            invoke-direct {v0, p0}, Ljava9/util/stream/Streams$StreamBuilderImpl;-><init>(Ljava/lang/Object;)V

            const/4 v1, 0x0

            .line 1184
            invoke-static {v0, v1}, Ljava9/util/stream/StreamSupport;->stream(Ljava9/util/Spliterator;Z)Ljava9/util/stream/Stream;

            move-result-object v0

            :goto_0
            return-object v0
        .end method

Декомпилированный метод библиотеки JAVA , в котором вызывается отсутствующий метод ( Build with crash ):

    .method public static varargs getLastNotNullValue([Ljava/lang/Object;)Ljava/lang/Object;
        .locals 2
        .annotation system Ldalvik/annotation/Signature;
            value = {
                "<T:",
                "Ljava/lang/Object;",
                ">([TT;)TT;"
            }
        .end annotation

        .annotation runtime Ljava/lang/SafeVarargs;
        .end annotation

        .line 56
        .local p0, "values":[Ljava/lang/Object;, "[TT;"
        invoke-static {p0}, Ljava9/util/stream/Stream;->of([Ljava/lang/Object;)Ljava9/util/stream/Stream;

        move-result-object v0

        sget-object v1, Lru/m4bank/mpos/service/network/utils/-$$Lambda$h24iVvNNOyPAWTyqI3I8dzCunHY;->INSTANCE:Lru/m4bank/mpos/service/network/utils/-$$Lambda$h24iVvNNOyPAWTyqI3I8dzCunHY;

        invoke-interface {v0, v1}, Ljava9/util/stream/Stream;->filter(Ljava9/util/function/Predicate;)Ljava9/util/stream/Stream;

        move-result-object v0

        invoke-interface {v0}, Ljava9/util/stream/Stream;->findFirst()Ljava9/util/Optional;

        move-result-object v0

        sget-object v1, Lru/m4bank/mpos/service/network/utils/-$$Lambda$EmptyUtils$2lJJnncNhWO5-cW1nB8g96aMo4M;->INSTANCE:Lru/m4bank/mpos/service/network/utils/-$$Lambda$EmptyUtils$2lJJnncNhWO5-cW1nB8g96aMo4M;

        invoke-virtual {v0, v1}, Ljava9/util/Optional;->orElseGet(Ljava9/util/function/Supplier;)Ljava/lang/Object;

        move-result-object v0

        return-object v0
    .end method

Тот же декомпилированный метод ( Сборка без сбоя ):

    .method public static varargs getLastNotNullValue([Ljava/lang/Object;)Ljava/lang/Object;
        .locals 2
        .annotation system Ldalvik/annotation/Signature;
            value = {
                "<T:",
                "Ljava/lang/Object;",
                ">([TT;)TT;"
            }
        .end annotation

        .annotation runtime Ljava/lang/SafeVarargs;
        .end annotation

        .line 56
        .local p0, "values":[Ljava/lang/Object;, "[TT;"
        invoke-static {p0}, Ljava9/util/stream/Stream$-CC;->of([Ljava/lang/Object;)Ljava9/util/stream/Stream;

        move-result-object v0

        sget-object v1, Lru/m4bank/mpos/service/network/utils/-$$Lambda$h24iVvNNOyPAWTyqI3I8dzCunHY;->INSTANCE:Lru/m4bank/mpos/service/network/utils/-$$Lambda$h24iVvNNOyPAWTyqI3I8dzCunHY;

        invoke-interface {v0, v1}, Ljava9/util/stream/Stream;->filter(Ljava9/util/function/Predicate;)Ljava9/util/stream/Stream;

        move-result-object v0

        invoke-interface {v0}, Ljava9/util/stream/Stream;->findFirst()Ljava9/util/Optional;

        move-result-object v0

        sget-object v1, Lru/m4bank/mpos/service/network/utils/-$$Lambda$EmptyUtils$2lJJnncNhWO5-cW1nB8g96aMo4M;->INSTANCE:Lru/m4bank/mpos/service/network/utils/-$$Lambda$EmptyUtils$2lJJnncNhWO5-cW1nB8g96aMo4M;

        invoke-virtual {v0, v1}, Ljava9/util/Optional;->orElseGet(Ljava9/util/function/Supplier;)Ljava/lang/Object;

        move-result-object v0

        return-object v0
    .end method

Вопрос: это kotlin ошибкаили я делаю что-то не так, и как тогда я могу использовать JAVA -libraries из хранилища (которые содержат интерфейсы со статическими методами внутри) на Android <7 </strong> и не вылетает?

1 Ответ

0 голосов
/ 06 ноября 2019

Вы пытаетесь использовать Java Stream Api на уровне API Android <24, что невозможно. </p>

Проверьте, что вы можете и не можете использовать на основе уровня API Android здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...