AndroidManifest文件合并出现的问题

2017-08-25  本文已影响260人  act262

出现的问题:

在有多个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
上一篇下一篇

猜你喜欢

热点阅读