2015-12-08 10 views
26

I ho cercato su Google il mio problema ma non riesco a trovare una soluzione.
Quando cerco di creare un APK firmato, ottengo questo errore:Errore: combinazione spazio dei nomi sospetta e prefisso [NamespaceTypo] quando provo a creare APK firmato

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 

Questo è il frammento di questo file di layout:

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

risposta

89

modificare il codice xmlns: app = "http://schemas.android.com/tools" con questo:

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

Ha fatto il lavoro mio.

+0

grazie per il feedback, terrò a mente dal mio prossimo risposta –

+2

senza bisogno di risposta canonica per me .. il mio problema risolto that's basta .. –

10

Le prime due righe del codice xml non sono corrette. L'intero file xml dovrebbe apparire come segue:

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

Le prime 2 righe sono la dichiarazione del file xml. Sebbene sia possibile visualizzare il layout effettivo della pagina nella vista di progettazione, il suo layout avrà comunque problemi durante la creazione poiché richiede il tag degli strumenti xml.

Lo scopo di questo spazio dei nomi è di essere in grado di registrare le informazioni nei file XML e di eliminare tali informazioni quando l'applicazione è impacchettata in modo tale che non vi siano runtime o penalità per le dimensioni del download. Si tratta di uno spazio dei nomi XML Android dedicato.

Spero che questo aiuti :)

1

Ho avuto lo stesso errore. Il mio problema era che Android Studio inserisce automaticamente un xmlns nella mia scheda di layout anziché il tag della vista radice quando si utilizza l'associazione dati.

In altre parole, quando ho Android Studio risolvere il app prefisso ha fatto questo:

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

quando avrebbe dovuto fare questo:

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

Il tools spazio dei nomi dovrebbe essere utilizzato per l'anteprima strumenti del xml su Android Studio. Ad esempio, se stai testando una vista che è nascosta di default, ma vuoi vederla nella tua anteprima, devi usare tools:visibility=visible.

Lo spazio dei nomi app, per quanto ne so, viene utilizzato per aggiungere viste e layout personalizzati allo spazio dei nomi del xml che si desidera aggiungere.

Quindi tutte le risposte sono corrette, ma penso che nessuno abbia spiegato cosa fanno gli spazi dei nomi. Così, per convenzione vi consiglio di usarli come questo:

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