Android приложение вылетает при включении proguard с выпуском apk: NoClassDefFoundError: Ошибка разрешения: Lorg / koin / core / context / GlobalContextKt; - PullRequest
0 голосов
/ 04 августа 2020

Я столкнулся с проблемой (приложение вылетает при запуске) с выпуском apk при включении proguard.

Вот трассировка стека:

E / AndroidRuntime: FATAL EXCEPTION: main Process: com .xxxx.yyyy, PID: 24018 java .lang.NoClassDefFoundError: Ошибка разрешения: Lorg / koin / core / context / GlobalContextKt; в com.xxxx.yyyy.MyApp.onCreate (MyApp.kt: 31) в android .app.Instrumentation.callApplicationOnCreate (Instrumentation. java: 1202) в android .app.ActivityThread.handleBindApplication (ActivityThread. java: 7349) в android .app.ActivityThread.access $ 2400 (ActivityThread. java: 308) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 2295) в android .os.Handler.dispatchMessage (Handler. java: 110) в android .os.Looper.l oop (Looper. java: 219) в android .app.ActivityThread.main (ActivityThread. java: 8347) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 513) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 1055) Вызвано: java .lang.ClassNotFoundException: org.koin.core.context.GlobalContextKt в com.xxxx.yyyy.MyApp.onCreate (MyApp.kt: 31) в android .app.Instrumentation.callApplicationOnCreate (Instrumentation. java: 1202) в android .app.ActivityThread.handleBindApplication (ActivityThread. * 10 36 *: 7349) в android .app.ActivityThread.access $ 2400 (ActivityThread. java: 308) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 2295) в android .os.Handler.dispatchMessage (Handler. java: 110) в android .os.Looper.l oop (Looper. java: 219) в android .app.ActivityThread.main (ActivityThread. java: 8347) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 513) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 1055)

Вот мой класс приложения, где я начинаю коин:

```    class MyApp : Application() {
    companion object {
        var language: String? = null
    }

    @ExperimentalContracts
    override fun onCreate() {
        super.onCreate()

        // Start Koin
        startKoin {
            androidContext(this@MyApp)
            androidLogger(Level.DEBUG)
            modules(
                listOf(
                    appModule,
                    networkModule,
                    activityModules
                )
            )
        }
    }

    override fun attachBaseContext(base: Context?) {
        if (base != null) {
            super.attachBaseContext(LocaleHelper.onAttach(base))
        }
        else {
            super.attachBaseContext(base)
        }
    }
} ```

Версия коина: 2.0 .1 Что интересно, вылетает только в подписанном apk релиза, когда minifyEnabled = true. Но если сборка отладки с minifyEnabled = true, она не вылетает! Я знаю, что не публиковал больше примеров кода, но очень сложно выяснить, что вызывает cra sh из журналов для выпуска apk. Я уже читал некоторые отчеты о проблемах на GitHub, но мне это не помогло. Спасибо за любой совет!

1 Ответ

0 голосов
/ 05 августа 2020

Я обнаружил проблему. Я совершенно забыл, что на прошлой неделе я изменил импорт Gradle для библиотеки firebase-crashlytics (используя новый способ). Также удалено сохранение аварийных сообщений класса в файле proguard-roles.

...