2015-12-08 5 views
26

Ich googelte mein Problem, aber ich kann keine Lösung finden.
Wenn ich versuche, eine signierte APK zu erstellen, bekomme ich diesen Fehler:Fehler: verdächtige Namespace und Präfix Kombination [NamespaceTypo], wenn ich versuche, signierte 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 

Dies ist das Fragment dieser Layout-Datei:

<?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"> 

Antwort

89

den Code Xmlns Änderung: app = "http://schemas.android.com/tools“mit diesem:

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

Es machte Minenarbeiten.

+0

Dank für das Feedback, werde ich es im Auge behalten, von meiner nächsten Antwort –

+2

nicht braucht kanonische Antwort für mich .. mein Problem 's genug festgelegt .. –

10

Ihre ersten beiden Zeilen des XML-Codes sind falsch. Die gesamte XML-Datei sollte wie folgt aussehen:

<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"> 

Die ersten beiden Zeilen sind die Deklaration der XML-Datei. Obwohl Sie das tatsächliche Layout der Seite in der Entwurfsansicht anzeigen können, würde das Layout itslef beim Erstellen immer noch Probleme verursachen, da es das Tag xml-Tools benötigt.

Der Zweck dieses Namespace ist es, Informationen in XML-Dateien aufzuzeichnen und diese Informationen zu entfernen, wenn die Anwendung so gepackt wird, dass es keine Laufzeit- oder Download-Größenbeschränkung gibt. Es ist ein dedizierter Android XML-Namespace.

this helps :)

1

ich diesen gleichen Fehler hatte. Mein Problem war, dass Android Studio bei Verwendung der Datenbindung automatisch eine xmlns-Datei in meine Layout-Registerkarte anstelle des Stammansichts-Tags eingefügt hat.

Mit anderen Worten, wenn ich Android Studio löst den app Präfix es dies tat:

<?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 --> 
      ... 

, wenn es haben soll dies geschehen:

<?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}"> 
      ... 
2

Der tools Namespace sollte für die Vorschau verwendet werden Werkzeuge des Xml auf Android-Studio. Wenn Sie beispielsweise eine Ansicht testen, die standardmäßig ausgeblendet ist, aber in der Vorschau angezeigt werden soll, verwenden Sie tools:visibility=visible.

Der Namespace app wird, soweit ich weiß, dazu verwendet, Ihre benutzerdefinierten Ansichten und Layouts dem Namespace des XML hinzuzufügen, dem Sie Ihre Ansichten hinzufügen möchten.

Also alle deine Antworten sind korrekt, aber ich denke, niemand erklärte, was die Namespaces tun. So zum Kongress empfehle ich sie wie folgt zu verwenden:

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