2016-08-27 242 views
4

当我创建一个Android库,默认情况下它会给我的清单文件下面图书馆清单中的`android:supportsRtl =“true”`必不可少?这是造成错误有时

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

后它作为Bintray库之后和被别人利用,才意识到如果应用程序,包括该库具有以下在其清单

android:supportsRtl="false" 

将发布如下错误gradle这个同步或编译期间。

Error:Execution failed for task ':app:processProductionDebugManifest'. 
> Manifest merger failed : Attribute [email protected] 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",会不会有任何潜在的问题?

回答

9

工具:替换=” X,Y”

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

当导入具有较低的目标SDK比项目库,可能有必要明确授予的权限(也许会让其他的变化)的库在后期运行正常。这将由清单合并器自动执行。

你得到

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

您可以添加

tools:replace="android:supportsRtl" 

最后

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

谢谢!我有问题在http://stackoverflow.com/questions/39178543/can-toolsreplace-androidsupportsrtl-go-along-with-toolsignore-allowback。希望你能检查出来,如果你知道这个答案... – Elye

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

+0

谢谢@ gaurav4sarma。我知道RTL的含义。只是想,如果我们可以决定不在库中设置它,并让应用程序设置它或覆盖它。 – Elye

+0

感谢您的回复。看起来你的答案已经在上面提出过了。祝你好运。 –