3

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

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

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

错误如下所示:

AGPBI: {"kind":"error","text":"Android 资源链接失败","sources":[{"file":"/Users/my_user/Documents/MyProject/App/AppName/build/intermediates/ metadata_feature_manifest/debug/processDebugManifest/metadata-feature/AndroidManifest.xml","position":{"startLine":40,"startColumn":8,"endLine":45,"endColumn":54}}],"original" :“/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 Play 生成您应用的基础 APK 时,它会将所有模块的清单合并到基础 APK 的清单中。因此,如果基础 APK 的清单引用基础 APK 中不存在的资源,资源链接就会中断。

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


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

4

1 回答 1

2

解决上述问题的解决方法实际上非常简单(虽然具有误导性且不好看)。

例如,如果日志抱怨找不到名为的样式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 />
于 2020-01-17T09:04:34.117 回答