出现的问题:
在有多个library依赖合并的情况下,很有可能会出现的问题
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="false"
android:theme="@style/Theme">
// ...
</application>
在其他库中对于这些属性值都有可能是不同的,所以会导致在合并时出现不知道以哪个值为准的问题。
比如Library库中的supportsRtl
属性
// 这里值为true,而主App的值为false
android:supportsRtl="true"
在合并AndroidManifest文件时就会出现下面的提示
Error:Execution failed for task ':app:processDevDebugManifest'.
> Manifest merger failed : Attribute application@supportsRtl value=(false) from AndroidManifest.xml:39:9-36
is also present at [Library:unspecified] AndroidManifest.xml:14:9-35 value=(true).
Suggestion: add 'tools:replace="android:supportsRtl"' to <application> element at AndroidManifest.xml:6:5-15:19 to override.
解决方案:
利用tools命名空间替换其他依赖库的属性,这样就统一了这个属性的最终取值。
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="false"
android:theme="@style/Theme"
tools:replace="android:supportsRtl">
</application>
如果一不小心写错需要的属性名,就会报下面的错,所以需要准确的对应属性名。
tools:replace specified at line:34 for attribute android:suppotsRtl, but no new value specified