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.