具有第三方库的动态功能,其清单中具有自定义主题的活动-找不到资源

问题描述 投票:0回答:1

我的应用程序中有一个充当动态功能的模块。

此动态功能模块使用第三方库,而该第三方库在其AndroidManifest中具有使用自定义主题的Activity。

使用描述的配置,应用程序可以正常编译,但是当我尝试运行它时,它抛出错误,表明找不到该Activity主题的资源。

错误看起来像这样:

[AGPBI:{“种类”:“错误”,“文本”:“ Android资源链接失败”,“源”:[{“文件”:“ /用户/ my_user / Documents / MyProject / App / AppName / build /中间体/metadata_feature_manifest/debug/processDebugManifest/metadata-feature/AndroidManifest.xml“,”位置“:{” startLine“:40,” startColumn“:8,” endLine“:45,” endColumn“:54}}],”原始的“:”“ / Users / my_user / Documents / MyProject / App / AppName / build / intermediates / metadata_feature_manifest / debug / processDebugManifest / metadata-feature / AndroidManifest.xml:41:9-46:55:AAPT:错误:资源样式/找不到CustomTheme(又名com.my.project.domain:style / CustomTheme)。\ n“,” tool“:” AAPT“}]

*出了什么问题:任务':app:processDebugResources'的执行失败。执行com.android.build.gradle.internal.tasks.Workers $ ActionFacade时发生故障Android资源链接失败/Users/my_user/Documents/MyProject/App/AppName/build/intermediates/metadata_feature_manifest/debug/processDebugManifest/metadata-feature/AndroidManifest.xml:41:9-46:55:AAPT:错误:资源样式/ CustomTheme(又名com .my.project.domain:style / CustomTheme)找不到。

我认为该问题与Google描述的以下问题有关:

在动态功能模块的清单中,您不应引用基本模块中不存在的资源。这是因为,当Google Play生成您应用的基本APK时,它将所有模块的清单合并到基本APK的清单中。因此,如果基本APK的清单引用了基本APK中不存在的资源,则资源链接会中断。

参考:https://developer.android.com/guide/app-bundle/


如果未打开要修改的第三方库,如何使该项目运行?

android dynamic-feature dynamic-feature-module dynamic-delivery
1个回答
0
投票

解决上述问题的方法实际上非常简单(虽然具有误导性,但外观也不佳)。

例如,如果日志抱怨找不到名为CustomTheme的样式和找不到的字符串名称custom_string,那么您要做的就是在基本模块中创建该样式和字符串资源,为空。 >

../ app / src / main / res / values / styles.xml

<resources ...>
...

<style name="CustomTheme" />

</resources>

../ app / src / main / res / values / strings.xml

<resources ...>
...

<string name="custom_string" />

<resources />
© www.soinside.com 2019 - 2024. All rights reserved.