当我创建Android库时,默认情况下它会在Manifest文件中给我以下内容
<application android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"/>
在将其作为库发布到Bintray并被其他人使用之后,请注意如果包含该库的应用程序在其Manifest
中包含以下内容 android:supportsRtl="false"
在gradle同步或编译过程中,它会发布如下错误:
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将此作为默认的库清单?如果我从库清单中删除android:supportsRtl="true"
,会有任何潜在的问题吗?
工具:取代= " x, y "
将任何较低优先级声明中的x, y属性替换为提供的值(必须出现在同一节点上)。
当导入一个目标SDK低于项目的库时,可能需要显式地授予权限(可能还需要进行其他更改),以便库在以后的运行时中正常运行。这将由清单合并自动执行。
清单合并失败:属性application@supportsRtlvalue=(false) from AndroidManifest.xml:23:9-36
可以添加
tools:replace="android:supportsRtl"
最后<application android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
tools:replace="android:supportsRtl"/>
如果你想支持从右到左(RTL)布局,这是必需的。如果设置为true, targetSdkVersion设置为17或更高,系统将激活和使用各种RTL api,以便您的应用程序可以显示RTL布局。如果设置为false或targetSdkVersion设置为16或更低,RTL api将被忽略或不起作用,并且无论与用户的Locale选择相关的布局方向如何,你的应用程序都将表现相同(你的布局总是从左到右)。
该属性的默认值为false。
此属性在API级别17中添加。
(来源:http://developer.android.com/guide/topics/manifest/application-element.html)