Комплект приложений: Может ли класс приложения находиться в модуле функций Dynami c? Сбой комплекта приложений - PullRequest
0 голосов
/ 09 января 2020

При рефакторинге кода для комплектов приложений может ли пользовательский класс Application оставаться в модуле com.android.dynamic-feature или только в базовом модуле com.android.application?

Я вижу объединенный манифест базы с пользовательским классом Application, но когда я запускаю приложение, я вижу сообщение об ошибке ниже в бесконечном l oop. В конечном счете, эмулятор падает.

Должен ли LaunchActivity с intent.action.MAIN and LAUNCHER быть в модуле com.android.application или в модуле com.android.dynamic-feature?

2020-01-08 15:45:16.134 ? E/<apppackage>: Unknown bits set in runtime_flags: 0x8000
2020-01-08 15:45:16.136 ? W/<apppackage>: Unexpected CPU variant for X86 using defaults: x86

2020-01-08 15:45:16.663 ? I/lowmemorykiller: Suppressed 83 failed kill reports

2020-01-08 15:45:16.781 ? E/JavaBinder: !!! FAILED BINDER TRANSACTION !!!  (parcel size = 923592)
2020-01-08 15:45:16.786 ? E/ActivityManager: Exception thrown during bind of ProcessRecord{a6f5e75 13002:<apppackage>/u0a166}
    android.os.TransactionTooLargeException: data parcel size 923592 bytes
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(BinderProxy.java:510)
        at android.app.IApplicationThread$Stub$Proxy.bindApplication(IApplicationThread.java:1479)
        at com.android.server.am.ActivityManagerService.attachApplicationLocked(ActivityManagerService.java:5058)
        at com.android.server.am.ActivityManagerService.attachApplication(ActivityManagerService.java:5180)
        at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2003)
        at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2741)
        at android.os.Binder.execTransactInternal(Binder.java:1021)
        at android.os.Binder.execTransact(Binder.java:994)

1 Ответ

0 голосов
/ 09 января 2020

Прикладной класс динамического c функционального модуля будет оставаться внутри самого себя.

всякий раз, когда вы будете загружать этот модуль, он будет загружать все ресурсы внутри этого модуля и после этого androidManifest. xml файлы обоих: модуль базового приложения и модуль динамического c будут объединены ... Это полезно только при реализации с aab (Android App Bundle).

Кроме того, вы везде, где вы расширяете класс приложения ... вы должны реализовать один метод переопределения, как показано ниже ...

override fun attachBaseContext(base: Context) {
        super.attachBaseContext(base)
        SplitCompat.install(this)
    }

, чтобы убедиться, что у вас нет никаких действий запуска в Dynami c функциональный модуль (поскольку он создаст на телефоне еще один значок приложения, который не выглядит подходящим).
Я сталкивался с этим раньше, и он работает для меня ... Надеюсь, у вас будет ваше решение. :)

...