图书馆清单中的`android:supportsRtl =“true”`必不可少?它有时会导致错误

时间:2016-08-27 06:22:04

标签: android android-manifest android-library

当我创建一个Android库时,默认情况下它会在Manifest文件中给我以下

<application android:allowBackup="true"
    android:label="@string/app_name"
    android:supportsRtl="true"/>

将其作为Bintray上的库发布并由其他人使用后,只需了解包含此库的应用程序是否在其Manifest中具有以下内容

    android:supportsRtl="false"

在gradle sync或compilation期间,它将发布如下错误。

Error:Execution failed for task ':app:processProductionDebugManifest'.
> Manifest merger failed : Attribute application@supportsRtl value=(false) from AndroidManifest.xml:23:9-36
is also present at [com.mylibrarypackage:mylibrary:1.0.0] AndroidManifest.xml:14:9-35 value=(true).
Suggestion: add 'tools:replace="android:supportsRtl"' to <application> element at AndroidManifest.xml:18:5-67:19 to override.

要解决此问题,我想我需要从我的库清单中删除android:supportsRtl="true"

想知道为什么Android将此作为默认的库清单?如果我从库Manifest中删除android:supportsRtl="true"会不会有任何潜在问题?

2 个答案:

答案 0 :(得分:17)

工具:replace =“x,y”

  

用任何低优先级声明替换x,y属性   提供的值(必须存在于同一节点上)。

导入目标SDK低于项目的库时,可能需要显式授予权限(并可能进行其他更改),以使库在以后的运行时中正常运行。这将由清单合并自动执行。

你要

  

清单合并失败:属性应用程序@ supportsRtl   AndroidManifest.xml中的值=(false):23:9-36

您可以添加

tools:replace="android:supportsRtl"

<强>最后

<application android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
tools:replace="android:supportsRtl"/>

答案 1 :(得分:0)

如果要支持从右到左(RTL)布局,则需要此选项。 如果设置为true且targetSdkVersion设置为17或更高,则系统将激活并使用各种RTL API,以便您的应用程序可以显示RTL布局。如果设置为false或者targetSdkVersion设置为16或更低,则RTL API将被忽略或无效,并且无论与用户的Locale选项关联的布局方向如何,您的应用都将表现相同(您的布局将始终保持不变-to-右)。

此属性的默认值为false。

此属性已在API级别17中添加。

(资料来源:http://developer.android.com/guide/topics/manifest/application-element.html