当我创建一个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"
会不会有任何潜在问题?
答案 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)