NoClassDefFoundError на некоторых устройствах - PullRequest
0 голосов
/ 06 июля 2019

При запуске приложения происходит сбой, и я получаю NoClassDefFoundError, выдаваемый Dagger 2.22.1 на некоторых устройствах, таких как Lenovo Coolpad под управлением Android 6.0.1 и на некоторых устройствах под управлением других версий (не относится к pre-lollipop)

Но я могу успешно работать на некоторых устройствах like OnePlus 7, Redmi note 6, Moto One Power с различными версиями Android OS

Я погуглил и нашел много возможных проблем, таких как

  1. Проблемы с Mutidex (которые правильно настроены в моем приложении)

2. Проблемы с защитой (я только пытаюсь запустить отладочную версию, которая не защищена)

  1. гораздо больше предложений (которые я пробовал, но не повезло)

Я застрял в этой проблеме на целый день, пытаясь выяснить причину

Примечание 1: Я получаю эту ошибку только для одного класса Mapper.kt, который расширяет com.google.common.base.Converted, который является рабочим файлом в git develop филиале

Примечание 2: При анализе .apk я обнаружил, что сгенерировано 4 .dex файла, включая основной .dex (classes.dex, classes2.dex, classes3.dex, classes4.dex)

Они в порядке

classes.dex

classes2.dex

classes3.dex

classes4.dex (эта папка находится в папке res, что я не уверен, что это правильно), потому что в ветке git develop она не находится под res folder

Вход

07-06 20:57:00.140 17098-17098/in.somepackage.debug E/AndroidRuntime: FATAL EXCEPTION: main
    Process: in.somepackage.debug, PID: 17098
    java.lang.NoClassDefFoundError: in.somepakage._offline._di.Mapper
    at in.somepakage._di.DaggerApp_Component.getMapper(DaggerApp_Component.java:1145)
    at in.somepakage._di.DaggerApp_Component.server(DaggerApp_Component.java:1931)
    at in.somepakage._di.DaggerApp_Component.getSyncDirtyTransaction(DaggerApp_Component.java:1166)
    at in.somepakage._di.DaggerApp_Component.getSyncDirtyTransactions(DaggerApp_Component.java:1170)
    at in.somepakage._di.DaggerApp_Component.getSignout(DaggerApp_Component.java:1188)
    at in.somepakage._di.DaggerApp_Component.getNotificationWorker(DaggerApp_Component.java:1228)
    at in.somepakage._di.DaggerApp_Component.injectApp(DaggerApp_Component.java:2132)
    at in.somepakage._di.DaggerApp_Component.inject(DaggerApp_Component.java:1946)
    at in.somepakage.App.setupDependencyInjection(App.java:479)
    at in.somepakage.App.onCreate(App.java:180)
...