Ottenere l'errore dice: "Nome della voce 'res / layout / test_toolbar.xml' scontrato 'durante la creazione dell'apk firmato


17

Ho aggiornato il mio studio Android da 3.5.x a 3.6 oggi e ottenere errore durante la generazione apk firmato per la variante di costruzione che mostra il seguente messaggio - Nome della voce 'res / layout / test_toolbar.xml' si sono scontrati non ho alcun layout con nome come questo uno in tutto il progetto. Ho una variante di build personalizzata denominata " stage " e ogni volta che provo a creare un apk firmato, fallisce sempre. Conto di trovare ancora una soluzione. Per favore aiutatemi con questo problema. Grazie

Aggiornamento: lo stesso problema può verificarsi anche con questi seguenti messaggi (come l'ho trovato in AS - 3.6.1 ). Quindi non preoccuparti per questo tipo di messaggi sconosciuti e non risolvibili. Finora ho trovato due nuovi tipi di messaggi durante la generazione di apk firmato:

  • Entry name 'kotlin/collections/MapWithDefault.kotlin_metadata' collided
  • Access Denied

La soluzione è la stessa A volte potresti aver bisogno del Invalidate Cache and Restarttuo AS per questo. Fammi sapere le tue scoperte. Grazie

Risposte:


16

Prima di leggere la soluzione di seguito, leggi il mio aggiornamento dal 01.04.2020, il problema è più profondo ed è nel tuo codice.

Ho lo stesso problema dopo questo aggiornamento 3.6.

* La soluzione veloce è: *

  1. elimina projectFolder \ build
  2. elimina projectFolder \ debug *
  3. elimina projectFolder \ release *
  4. elimina projectFolder \ app \ build
  5. elimina projectFolder \ app \ build \ debug *
  6. elimina projectFolder \ app \ build \ release *

Quindi è necessario eliminare tutte le directory build, debug e release.

Nota che potresti non essere in grado di eliminare l'intero debug e rilasciare le directory, ma puoi eliminarne tutto il contenuto.

UPD:

Penso che abbiano risolto questo bug oggi: inserisci qui la descrizione dell'immagine

UPD 03.03.2020: Sfortunatamente, il bug non è stato corretto.

UPD 01.04.2020: (Non scherzo del 1 aprile :))

Dal mese ho lavorato con gli sviluppatori di Android Studio e oggi mi è stato detto di usare jdk invece di usare jre, perché lo diceva uno dei profondi errori nei log.

Dopo aver impostato jdk ( File-> Struttura del progetto-> Posizione SDK-> Posizione JDK ) invece di jre, ho alcuni altri errori che non sono stati mostrati in "build output", quindi eseguo Analizza -> Ispeziona codice e ho ottenuto DICIotto errori come fare riferimento a ID di visualizzazione errato nei layout, errori di orientamento (ciao a tools:ignore="MissingDefaultResource") ed errori in manifest anche con orientamento: ho letto che questo è un nuovo aggiornamento in 3.6.1 - su orizzontale o verticale screenOrientation, risolto velocemente da Studio con questo: <activity tools:ignore="LockedOrientationActivity" />

Quando tutti gli errori sono stati corretti con Analizza -> Ispeziona codice, ho generato con successo l'APK firmato usando jdk e quindi usando jre (solo per test).

Quindi, in sintesi, questo bug ha causato a causa di errori profondi che puoi scoprire solo con lo Inspect Codestrumento.

Penso che AS non penserà che questo sia un bug, penso che diranno che questa è una nuova funzionalità per migliorare il tuo codice. Inoltre penso che dovresti provare a ispezionare il tuo codice anche senza impostare jdk invece di jre.

Raccomandazione aggiuntiva dal supporto AS:

A proposito durante l'esportazione di una releasebuild, eseguiamo anche lintVitalun controllo extra e alcuni errori contrassegnati come fatal. Questo controllo è costoso, quindi non si verifica nelle debugbuild


1
Molte grazie. L'ho già risolto. Sei sicuro che questa sia una versione stabile (davvero)?
Saadat,

1
@ Saadat no, ho controllato ora - bug ancora lì.
danyapd

Grazie mille. Stavo per aggiornare di nuovo in attesa di una correzione. @danyapd
Saadat

Trovo che anche io debba cancellare projectFolder\app\[all flavor folders].
drmrbrewer,

1
Grazie, Build > Rebuild Projectrisolto il problema per me, in Android Studio 3.6.2.
gregn3

7

Durante la generazione dell'apk, controlla la cartella di destinazione, dalla quale elimina output.json e app-debug.apk dalla cartella di debug. Prova a costruire lo stesso dopo questo. AFAIK, è un bug per Android Studio, spero che possano risolverlo presto :)


1
Grazie per la risposta. Ho già fatto lo stesso e risolto il mio problema. :)
Saadat,

1
Molte grazie!! trovato questo dopo 2,5 ore di lotta
Kishita Variya il

Grazie per questo, ha funzionato come per incanto
Brian il

4

Ho eliminato i precedenti output di build per la variante di build, incluso il file APK. Questo è ciò che mi ha aiutato


1
Ho provato a cancellare la builddirectory nel suo insieme, ho ancora avuto lo stesso problema. Puoi elaborare ciò che hai fatto per intero?
Pusparaj,

Stai eliminando la directory di build nella radice del progetto e anche la directory app / build? Nel mio progetto il percorso di output di apk viene modificato e semplicemente elimino il file apk precedente in cui si trovava.
Vladislav Vatrushkin,

1

Succede quando hai usato la funzione auto viewBinding, Binding usando Kotlin o viewBinding di 3.6.

Nel caso in cui si stiano aggiungendo file il cui elemento condivide lo stesso ID, ViewBinding confonde e crea tale errore.

Permettetemi di aiutarvi, ad esempio, con la classe Adapter che ha due file di layout che si separano per view Tipo:

import kotlinx.android.synthetic.main.frag_subscription_recommend.view.*


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
   return ViewHolder(
        LayoutInflater.from(parent.context).inflate(
            if (viewType == 1) {
                R.layout.frag_subscription_recommend
            } else
                R.layout.frag_subscription_common,
            parent,
            false
        )
    )
}

onBinding(){
  holder.itemView.id_button_submit.setOnClickListener {}
}

// che nel caso in cui si confonda quale risorsa o layout riempia completamente il requisito bcoz hanno entrambi gli stessi ID del pulsante. nel caso in cui devi usare:

 onBinding(){
  holder.itemView.findViewById<Button>(R.id.id_button_submit).setOnClickListener {}
}

che consentono la vecchia implementazione.

Fammi sapere se questo funziona dalla tua parte?


1
Siamo spiacenti, ma il problema era con le directory build, debug e release. incluso il file json di output. Comunque, grazie per la tua risposta
Saadat

1

Ho avuto lo stesso errore dopo aver aggiornato Android Studio e ho risolto il problema pulendo solo il progetto (Build> Clean Project)! :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.