0

在为 App Bundle 重构代码时,自定义 Application 类是否可以保留在com.android.dynamic-feature模块中,还是应该只在com.android.application基本模块中?

我看到基础的合并清单具有自定义应用程序类,但是当我启动应用程序时,我在无限循环中看到下面的错误消息。模拟器最终崩溃。

LaunchActivityintent.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)

4

1 回答 1

0

动态功能模块的应用程序类将保留在自身内部..

每当您下载该模块时,它都会下载该模块内的所有资源,然后 androidManifest.xml 两个文件:基础应用程序模块和动态模块将被合并...这仅在使用 aab(Android App Bundle)实现时才有用。

此外,无论您在何处扩展应用程序类...您都必须实现一种覆盖方法,如下所示...

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

确保您在动态功能模块中没有任何启动器活动(因为它会在手机上创建另一个看起来不合适的应用程序图标)。
我之前遇到过这个问题,它对我有用……我希望你能找到解决方案。:)

于 2020-01-09T09:05:23.500 回答