Ошибка
Код: Выделить всё
AndroidRuntime E FATAL EXCEPTION: main
Process: my.app.android, PID: 24808
java.lang.NoClassDefFoundError: Failed resolution of: [Ljava/nio/file/LinkOption;
at af.h.(JavaFlexibleTypeDeserializer.kt:18)
at pl.h.onCreate(MyApp.java:302)
at my.app.android.MyBaseApp.onCreate(MyBaseApp.kt:1)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1013)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4707)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.nio.file.LinkOption" on path: DexPathList[[zip file "/data/app/my.app.android-2/base.apk"],nativeLibraryDirectories=[/data/app/my.app.android-2/lib/x86, /data/app/my.app.android-2/base.apk!/lib/x86, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at af.h.(JavaFlexibleTypeDeserializer.kt:18)
at pl.h.onCreate(MyApp.java:302)
at my.app.android.MyBaseApp.onCreate(MyBaseApp.kt:1)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1013)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4707)
at android.app.ActivityThread.-wrap1(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Suppressed: java.lang.ClassNotFoundException: java.nio.file.LinkOption
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 14 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
Сохранение классов в Proguard
Я уже пробовал эти строки в своем файле proguard, но не смог решить проблему.
Код: Выделить всё
-keep class java.nio.file.** { *; }
-keep class java.nio.file.LinkOption { *; }
-keepclassmembers class java.nio.file.* {
;
();
;
}
Я пытался обновить Firebase до последней версии, поскольку более ранняя трассировка стека показывает строку из FirebaseInitProvider, но ошибка «Не удалось разрешить»: [Ljava/nio/file/LinkOption; все еще отображается. Он был изменен на трассировку стека, указанную выше, после того, как я обновил путь к классам "com.google.gms:google-services:4.3.14"
Desugaring
Я попробовал Desugaring с Java 11 nio на основе: https://developer.android.com/studio/wr ... port-table с использованием coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_nio:2.0.1', но столкнулся с другой проблемой, когда FakeDependency.jar пуст. Вот ссылка на переполнение стека для этой проблемы: Android Desugaring с nio Не удалось преобразовать FakeDependency.jar для соответствия атрибутам
Но Desugaring с coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.1' прекрасно собирает проект, но все еще имеет трассировку стека LinkOption, показанную выше.
Среды
Эта проблема возникает только тогда, когда я создаю приложение и устанавливаю его на устройство Android на API уровне 23 с minifyEnabled true. Но запустить его на уровне API 33 вполне нормально.
Ниже приведена таблица различных уровней API с настройкой minifyEnabled и их статус после запуска установленного приложения.
Код: Выделить всё
| API Lvl | minifyEnabled | Status |
| ------- | ------------- | --------- |
| 23 | true | Crashed |
| 23 | false | Succeeded |
| 24 | true | Crashed |
| 24 | false | Succeeded |
| 33 | true | Succeeded |
| 33 | false | Succeeded |
Есть мысли о том, что я мог пропустить или не сделать?>
Подробнее здесь: https://stackoverflow.com/questions/763 ... olution-of
Мобильная версия