A obtenção do erro diz - "O nome da entrada 'res / layout / test_toolbar.xml' colidiu" ao criar um apk assinado

17

Atualizei meu android studio de 3.5.x para 3.6 hoje e obtendo erro ao gerar apk assinado para a variante de compilação que mostra a seguinte mensagem - Nome da entrada 'res / layout / test_toolbar.xml' colidiu Não tenho nenhum layout com este nome um em todo o projeto. Eu tenho uma variante de build personalizada chamada " stage " e sempre que estou tentando criar um apk assinado, ele sempre falha. Conto encontrar qualquer solução ainda. Por favor me ajude com esse problema. obrigado

Atualização: O mesmo problema pode ocorrer também com as seguintes mensagens (como eu encontrei no AS - 3.6.1 ). Portanto, não se preocupe com esse tipo de mensagem desconhecida e não solucionável. Até agora, encontrei dois novos tipos de mensagens ao gerar um apk assinado:

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

Solução é a mesma. Às vezes você pode precisar do Invalidate Cache and Restartseu AS para isso. Deixe-me saber suas descobertas. obrigado

Saadat
fonte

Respostas:

16

Antes de ler a solução abaixo, leia minha atualização de 01.04.2020, o problema é mais profundo e está no seu código.

Eu tenho o mesmo problema após esta atualização 3.6.

* A solução rápida é: *

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

Portanto, você precisa excluir todos os diretórios de compilação, depuração e lançamento.

Observe que você pode não conseguir excluir diretórios de depuração e versão inteiros , mas pode excluir todo o conteúdo.

UPD:

Eu acho que eles corrigiram esse bug hoje: insira a descrição da imagem aqui

UPD 03.03.2020: Infelizmente, o bug não foi corrigido.

UPD 01.04.2020: (Não é brincadeira de 1º de abril :))

Desde o mês em que trabalhei com desenvolvedores do Android Studio e hoje me disseram para usar o jdk em vez de usar o jre, porque um dos erros mais profundos nos registros dizia It.

Depois de configurar o jdk ( Arquivo-> Estrutura do projeto-> Localização do SDK-> Localização do JDK ) em vez de jre, eu tenho outros erros que não foram mostrados na "saída de construção", então eu executo Analisar -> Inspecionar código e obtendo dezoito erros como referir-se ao ID de exibição incorreto nos layouts, erros com orientação (oi para tools:ignore="MissingDefaultResource") e erros no manifesto também com orientação: Li que esta é uma nova atualização na 3.6.1 - sobre paisagem ou retrato screenOrientation, corrigida rapidamente pelo Studio com isso: <activity tools:ignore="LockedOrientationActivity" />

Quando todos os erros foram corrigidos com o Analisar -> Inspecionar Código, eu gerei com êxito o APK assinado usando o jdk e depois usando o jre (apenas para teste).

Então, em resumo, esse bug foi causado por erros profundos que você pode descobrir apenas com a Inspect Codeferramenta.

Eu acho que o AS não acha que isso seja um bug, acho que eles disseram que esse é um novo recurso para melhorar seu código. Também acho que você deve tentar inspecionar seu código mesmo sem definir o jdk em vez do jre.

Recomendação adicional do suporte do AS:

Ao exportar uma releasecompilação, também executamos lintVitalalgumas verificações extras e alguns erros marcados como fatal. Essa verificação é cara e, portanto, não ocorre nas debugcompilações

danyapd
fonte
11
Muito obrigado. Eu já resolvi isso. Tem certeza de que esta é uma versão estável (realmente)?
Saadat 03/03
11
@ Saadat não, eu verifiquei agora - bug ainda está lá.
danyapd 03/03
Muito obrigado. Eu ia atualizar novamente esperando conserto. @danyapd
Saadat
Acho que tenho que excluir projectFolder\app\[all flavor folders]também.
drmrbrewer 24/03
11
Obrigado, um Build > Rebuild Projectconserto para mim, no Android Studio 3.6.2.
gregn3 6/04
7

Ao gerar o apk, verifique a pasta de destino, da qual exclua output.json e app-debug.apk da pasta debug. Tente construir o mesmo depois disso. AFAIK, é um bug para o estúdio android, espero que eles possam corrigir isso em breve :)

Ameena Shafeer
fonte
11
Obrigado pela sua resposta. Eu já fiz o mesmo e resolvi meu problema. :)
Saadat 4/03
11
Muito obrigado!! descobriu isso após 2,5 horas de luta
Kishita Variya 16/03
Obrigado por isso, funcionou como um encanto
Brian
4

Excluí as saídas de compilação anteriores da variante de compilação, incluindo o arquivo APK. Foi isso que me ajudou

Vladislav Vatrushkin
fonte
11
Tentei excluir o builddiretório como um todo, ainda tenho o mesmo problema. Você pode elaborar o que fez na íntegra?
Pusparaj 26/02
Você excluiu o diretório de construção na raiz do projeto e o diretório app / build também? No meu projeto, o caminho de saída do apk é alterado e eu simplesmente excluo o arquivo apk anterior onde ele estava localizado.
Vladislav Vatrushkin
1

Isso acontece quando você usa o viewBinding automático, o Binding usando o Kotlin ou o recurso viewBinding do 3.6.

Caso esteja adicionando arquivos cujo elemento compartilha os mesmos IDs, o ViewBinding confunde e cria esse erro.

Deixe-me ajudá-lo pelo exemplo Classe do adaptador que possui dois arquivos de layout separados por exibição 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 {}
}

// que, caso confunda qual recurso ou layout preenche completamente o requisito, bcoz possui os mesmos IDs do botão. caso você precise usar:

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

que habilitam a implementação antiga.

Deixe-me saber se isso está funcionando do seu lado?

Jatin Sahgal
fonte
11
Desculpe, mas o problema estava nos diretórios de compilação, depuração e lançamento. incluindo arquivo json de saída. De qualquer forma, obrigado pela sua resposta
Saadat
1

Eu tive o mesmo erro depois de atualizar o android studio e resolvo o problema apenas limpando o projeto (Build> Clean Project)! :)

Agathe Casgrain-Cyr
fonte