首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的动态功能模块\类突然就找不到了?

为什么我的动态功能模块\类突然就找不到了?
EN

Stack Overflow用户
提问于 2022-03-09 17:12:06
回答 1查看 535关注 0票数 0

我的.aab构建的应用程序支持下载它唯一的动态功能,我遇到了一个问题。这个功能已经在我的应用程序中使用了两年了,但是突然间,当用户试图导航到动态功能中的活动时,应用程序检测到他们需要下载活动所在的模块时,我突然看到了这个错误:

代码语言:javascript
复制
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文件有以下内容:

代码语言:javascript
复制
dynamicFeatures = [':dynamicfeature:features:takeatour']

在我的DynamicFeature模块中,它的build.gradle文件有以下内容:

代码语言:javascript
复制
plugins {
    id 'com.android.dynamic-feature'
}

dynamicfeature模块的清单与通常相同:

代码语言:javascript
复制
<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>

简而言之,一个已经运行了很长时间的动态特性突然不再起作用了,在我看来,这是因为路径不正确。为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-21 22:46:30

我从来不知道为什么突然停止工作,但最终重构了这部分代码,以便根据示例这里 (而不是动态方法)按需下载。现在又开始工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71413362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档