我的.aab构建的应用程序支持下载它唯一的动态功能,我遇到了一个问题。这个功能已经在我的应用程序中使用了两年了,但是突然间,当用户试图导航到动态功能中的活动时,应用程序检测到他们需要下载活动所在的模块时,我突然看到了这个错误:
InTouch - 207: Lifecycle: logging uncaught exception in build Build: 1.0000.00272 from Thread: main, exception was:
Unable to instantiate activity
ComponentInfo{com.reddragon.intouch/com.reddragon.intouch.ui.takeatour.TakeATourActivity}:
java.lang.ClassNotFoundException: Didn't find class
"com.reddragon.intouch.ui.takeatour.TakeATourActivity" on path: DexPathList[[zip file
"/system/framework/android.test.runner.jar", zip file "/data/app/com.reddragon.intouch-
Ae8aOmjSevtS5TrlhCSSeA==/base.apk", zip file "/data/app/com.reddragon.intouch-
Ae8aOmjSevtS5TrlhCSSeA==/split_config.arm64_v8a.apk", zip file
"/data/app/com.reddragon.intouch-Ae8aOmjSevtS5TrlhCSSeA==/split_config.en.apk", zip file
"/data/app/com.reddragon.intouch-
Ae8aOmjSevtS5TrlhCSSeA==/split_config.xxxhdpi.apk"],nativeLibraryDirectories=
[/data/app/com.reddragon.intouch-Ae8aOmjSevtS5TrlhCSSeA==/lib/arm64,
/data/app/com.reddragon.intouch-Ae8aOmjSevtS5TrlhCSSeA==/base.apk!/lib/arm64-v8a,
/data/app/com.reddragon.intouch-
Ae8aOmjSevtS5TrlhCSSeA==/split_config.arm64_v8a.apk!/lib/arm64-v8a,
/data/app/com.reddragon.intouch-Ae8aOmjSevtS5TrlhCSSeA==/split_config.en.apk!/lib/arm64-v8a,
/data/app/com.reddragon.intouch-Ae8aOmjSevtS5TrlhCSSeA==/split_config.xxxhdpi.apk!/lib/arm64-
v8a, /system/lib64, /system/vendor/lib64]] at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2841) at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032) at
android.app.ActivityThread.-wrap11(Unknown Source:0) at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696) at
android.os.Handler.dispatchMessage(Handler.java:105) at
android.os.Looper.loop(Looper.java:164) at
android.app.ActivityThread.main(ActivityThread.java:6944) at
java.lang.reflect.Method.invoke(Native Method) at
com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)我不知道该怎么做才能解决这个问题--我已经检查了.aab文件,似乎所有的类都在那里,就像以前一样。
但是,我确实注意到上面列出的路径不包括“外接”.zip文件,这可能是问题所在。但我不知道在配置设置中发生了什么变化会导致这种情况吗?它是如何决定“DexPathList”中应该是什么的?
我已经验证了在我的动态特性设置中没有什么改变,即我的'app‘级build.gradle文件有以下内容:
dynamicFeatures = [':dynamicfeature:features:takeatour']在我的DynamicFeature模块中,它的build.gradle文件有以下内容:
plugins {
id 'com.android.dynamic-feature'
}dynamicfeature模块的清单与通常相同:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dist="http://schemas.android.com/apk/distribution"
xmlns:tools="http://schemas.android.com/tools"
package="com.reddragon.intouch.ui.takeatour">
<dist:module
dist:instant="false"
dist:title="@string/title_takeatour">
<dist:delivery>
<dist:on-demand />
</dist:delivery>
<dist:fusing dist:include="true" />
</dist:module>
<application tools:ignore="MissingApplicationIcon">
<activity
android:name=".TakeATourActivity"
android:theme="@style/DialogTheme" />
</application>
</manifest>简而言之,一个已经运行了很长时间的动态特性突然不再起作用了,在我看来,这是因为路径不正确。为什么?
发布于 2022-05-21 22:46:30
我从来不知道为什么突然停止工作,但最终重构了这部分代码,以便根据示例这里 (而不是动态方法)按需下载。现在又开始工作了。
https://stackoverflow.com/questions/71413362
复制相似问题