我的应用程序中有一个充当动态功能的模块。
此动态功能模块使用第三方库,而该第三方库在其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/
如果未打开要修改的第三方库,如何使该项目运行?
解决上述问题的方法实际上非常简单(虽然具有误导性,但外观也不佳)。
例如,如果日志抱怨找不到名为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 />