错误:当我尝试创建签名APK时,可疑命名空间和前缀组合[NamespaceTypo]

时间:2015-12-08 15:10:12

标签: android

我用谷歌搜索了我的问题,但我找不到解决办法 当我尝试创建已签名的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">

4 个答案:

答案 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}">
            ...