Подтвердить что ты не робот

Ошибка: подозрительное пространство имен и префиксная комбинация [NamespaceTypo] при попытке создания подписанного APK

Я искал свою проблему, но не могу найти решение.
Когда я пытаюсь создать подписанный 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">
4b9b3361

Ответ 1

измените код xmlns: app = "http://schemas.android.com/tools" следующим образом:

xmlns:app="http://schemas.android.com/apk/res-auto"

Это сделало мою работу.

Ответ 2

Ваши первые две строки кода 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. Хотя вы можете просмотреть фактический макет страницы в представлении дизайна, в макете itslef все еще будут проблемы при построении, так как ему нужен тег инструментов xml.

Цель этого пространства имен - иметь возможность записывать информацию в XML файлы и лишить эту информацию, когда приложение упаковано, чтобы не было времени выполнения или ограничения размера загрузки. Это специальное пространство имен Android.

Надеюсь, что это поможет:)

Ответ 3

Пространство имен tools должно использоваться для инструментов предварительного просмотра xml на студии android. Например, если вы проверяете представление, которое по умолчанию скрыто, но вы хотите увидеть его в своем предварительном просмотре, вы должны использовать tools:visibility=visible.

Пространство имен app, насколько мне известно, используется для добавления ваших пользовательских представлений и макетов в пространство имен xml, которое вы хотите добавить в свои представления.

Итак, все ваши ответы правильные, но я думаю, никто не объяснил, что делают пространства имен. Поэтому для конвенции я рекомендую их использовать следующим образом:

xmlns:yourAppName="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"

Ответ 4

У меня была такая же ошибка. Моя проблема заключалась в том, что 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}">
            ...