我用谷歌搜索了我的问题,但我找不到解决办法 当我尝试创建已签名的APK时,我收到此错误:
Error:(6) Error: Suspicious namespace and prefix combination [NamespaceTypo]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Explanation for issues of type "NamespaceTypo":
track these down.
xmlns:app="http://schemas.android.com/tools"
obscure error messages. This check looks for potential misspellings to help
Accidental misspellings in namespace declarations can lead to some very
这是此布局文件的片段:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fab="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/tools"
app:layout_behavior="@null"
android:layout_gravity="bottom|right">
答案 0 :(得分:122)
更改代码xmlns:app =&#34; http://schemas.android.com/tools"有了这个:
xmlns:app="http://schemas.android.com/apk/res-auto"
这使我的工作。
答案 1 :(得分:13)
xml代码的前两行不正确。整个xml文件应如下所示:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/tools"
app:layout_behavior="@null"
android:layout_gravity="bottom|right">
前两行是xml文件的声明。虽然您可以在设计视图中查看页面的实际布局,但由于需要xml工具标记,因此在构建时它的布局仍会出现问题。
此命名空间的目的是能够在XML文件中记录信息,并在打包应用程序时剥离该信息,使得没有运行时或下载大小损失。它是一个专用的Android XML命名空间。
希望这会有所帮助:)
答案 2 :(得分:3)
tools
命名空间应该用于android studio上xml的预览工具。例如,如果您正在测试默认情况下隐藏的视图,但您希望在预览中看到它,则应使用tools:visibility=visible
。
据我所知,app
命名空间用于将自定义视图和布局添加到要添加视图的xml的命名空间中。
所以你的所有答案都是正确的,但我认为没有人解释命名空间的作用。所以对于惯例,我建议像这样使用它们:
xmlns:yourAppName="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
答案 3 :(得分:2)
我有同样的错误。我的问题是,在使用数据绑定时,Android Studio会自动将xmlns放入我的布局选项卡而不是根视图标记。
换句话说,当我让Android Studio解析app
前缀时,它会执行此操作:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:custom="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/tools"> <!-- added namespace here ... -->
<data>
<variable
name="viewModel"
type="com.example.ViewModel"/>
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="..."
android:layout_height="..."
android:orientation="vertical"
app:backgroundResource="@{viewModel.someResource}"> <!-- ... when trying to resolve app -->
...
什么时候应该这样做:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:custom="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.example.ViewModel"/>
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools" <!-- should have added here -->
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="..."
android:layout_height="..."
android:orientation="vertical"
app:backgroundResource="@{viewModel.someResource}">
...