为了账号安全,请及时绑定邮箱和手机立即绑定

工具:在Android清单中替换而不是替换

工具:在Android清单中替换而不是替换

Qyouu 2019-10-26 13:29:24
我正在使用具有许多不同库依赖项的gradle项目,并使用新的清单合并。在我的<application />标签中,我将其设置为:<application tools:replace="android:icon, android:label, android:theme, android:name"    android:name="com.example.myapp.MyApplcation"    android:allowBackup="true"    android:icon="@drawable/ic_launcher"    android:label="@string/application_name"    android:logo="@drawable/logo_ab"    android:theme="@style/AppTheme"    >....</application>但是我收到错误:/android/MyApp/app/src/main/AndroidManifest.xml:29:9        Error:Attribute application@icon value=(@drawable/ic_launcher) from AndroidManifest.xml:29:9is also present at {Library Name} value=(@drawable/app_icon)Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:26:5 to override/android/MyApp/app/src/main/AndroidManifest.xml:30:9 Error:Attribute application@label value=(@string/application_name) from AndroidManifest.xml:30:9is also present at {Library Name} value=(@string/app_name)Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:26:5 to override/android/MyApp/app/src/main/AndroidManifest.xml:27:9 Error:Attribute application@name value=(com.example.myapp.MyApplication) from AndroidManifest.xml:27:9is also present at {Another Library}Suggestion: add 'tools:replace="android:name"' to <application> element at AndroidManifest.xml:26:5 to override/android/MyApp/app/src/main/AndroidManifest.xml:32:9 Error:Attribute application@theme value=(@style/AppTheme) from AndroidManifest.xml:32:9is also present at {Library Name} value=(@style/AppTheme)Suggestion: add 'tools:replace="android:theme"' to <application> element at AndroidManifest.xml:26:5 to override
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

我刚刚遇到tools:replace=...了OP描述的相同行为。


事实证明,tools:replace清单合并忽略的根本原因是此处描述的错误。这基本上意味着,如果您的项目中有一个包含清单的库,而清单的<application ...>节点包含一个tools:ignore=...属性,则很可能tools:replace=...会忽略主模块清单中的属性。


这里的棘手点是它可以发生,但不是必须的。在我的情况下,我有两个库,一个具有tools:ignore=...属性的库A,一个具有在相应清单中要替换的tools:replace=...属性以及在主模块的清单中的属性的库B。如果B的清单在A的清单之前被合并到主清单中,则一切正常。以相反的合并顺序出现错误。


这些合并发生的顺序似乎有些随机。在我的情况下,更改的“依赖关系”部分中的顺序build.gradle没有任何效果,但更改风味的名称即可。


因此,唯一可靠的解决方法似乎是解开引起库的问题,删除tools:ignore=...标签(应该没问题,因为这仅是皮棉的提示),然后再次打包库。


并为要修复的错误投票,是有原因的。


查看完整回答
反对 回复 2019-10-26
  • 3 回答
  • 0 关注
  • 1048 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信