В сообщении об ошибке говорится - «Entry name» res / layout / test_toolbar. xml «столкнулся» при создании подписанного apk - PullRequest
18 голосов
/ 26 февраля 2020

Я обновил мою android студию с 3.5.x до 3.6 сегодня и получаю ошибку при создании подписанного apk для варианта сборки, показывающего следующее сообщение - Имя записи 'res / layout / test_toolbar. xml' столкнулся. У меня вообще нет макета с таким именем во всем проекте. У меня есть пользовательский вариант сборки с именем " stage ", и всякий раз, когда я пытаюсь создать подписанный apk, он всегда терпит неудачу. Я считаю, найти решение еще. Пожалуйста, помогите мне с этим вопросом. Спасибо

Обновление: Та же проблема может возникнуть и в следующих сообщениях (как я обнаружил в AS - 3.6.1 ). Так что не беспокойтесь о таких неизвестных и неразрешимых сообщениях. Пока я обнаружил два новых типа сообщений при генерации подписанного apk:

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

Решение одно и то же. Иногда вам может понадобиться Invalidate Cache and Restart ваш AS для этого. Дайте мне знать ваши выводы. Спасибо

Ответы [ 6 ]

17 голосов
/ 02 марта 2020

Перед прочтением решения ниже, пожалуйста, прочтите мое обновление от 01.04.2020, проблема глубже и находится в вашем коде.

I после обновления 3.6 возникает та же проблема.

* Решение fast : *

  1. delete projectFolder \ build
  2. удалить projectFolder \ debug *
  3. удалить projectFolder \ release *
  4. удалить projectFolder \ app \ build
  5. удалить projectFolder \ app \ build \ debug *
  6. delete projectFolder \ app \ build \ release *

Поэтому вам нужно удалить все каталоги build, debug и release.

Обратите внимание, что вы, возможно, не сможете удалить целые каталоги отладки и выпуска , но вы можете удалить все их содержимое.

UPD:

Я думаю, что они исправили эту ошибку сегодня: enter image description here

UPD 03.03.2020: К сожалению, ошибка не исправлена.

UPD 01.04.2020: (не шутка от 1 апреля :))

С тех пор как я работал с Android разработчиками Studio, мне сегодня сказали использовать jdk вместо jre, потому что одна из глубоких ошибок в Журналы сказали Это.

После установки jdk ( Файл-> Структура проекта-> Расположение SDK-> Расположение JDK ) вместо jre у меня есть некоторые другие ошибки, которые не были показаны в «выводе сборки» поэтому я запускаю Анализировать -> Проверить код и получаю EIGHTEEN ошибки, такие как ссылка на неправильный идентификатор вида в макетах, ошибки с ориентацией (привет до tools:ignore="MissingDefaultResource") и ошибки в манифесте также с ориентация: я прочитал, что это новое обновление в 3.6.1 - о пейзаже или портрете screenOrientation, быстро исправленное Studio: <activity tools:ignore="LockedOrientationActivity" />

Когда все ошибки были исправлены с помощью Analyze -> Проверьте код, я успешно сгенерировал подписанный APK с помощью jdk, а затем с помощью jre (только для теста).

Итак, в итоге, эта ошибка возникла из-за глубоких ошибок, которые вы можете обнаружить только с помощью Inspect Code tool.

Я думаю, что AS не сочтет это ошибкой, я думаю, они скажут, что это новая функция для улучшения вашего кода. Также я думаю, что вы должны попытаться проверить свой код даже без установки jdk вместо jre.

Дополнительные рекомендации от поддержки AS:

Кстати, при экспорте release build, мы также запускаем lintVital, который выполняет некоторые дополнительные проверки и имеет некоторые ошибки, помеченные как fatal. Эта проверка стоит дорого, поэтому она не происходит в debug сборках

7 голосов
/ 27 февраля 2020

При создании apk проверьте папку назначения, из которой удалите выходные данные. json и app-debug.apk из папки отладки. Попробуйте построить то же самое после этого. AFAIK, это ошибка для android studio, надеюсь, они скоро это исправят :)

4 голосов
/ 26 февраля 2020

Я удалил предыдущие результаты сборки для варианта сборки, включая файл APK. Вот что мне помогло

2 голосов
/ 11 апреля 2020

У меня была такая же ошибка после обновления android studio, и я исправляю проблему, только чистя проект (Build> Clean Project)!:)

1 голос
/ 29 февраля 2020

Это происходит, когда вы используете auto viewBinding, Binding с использованием Kotlin или функцию viewBinding 3.6.

В случае, если вы добавляете файлы, элементы которых имеют одинаковые идентификаторы, ViewBinding приводят в замешательство и создают такую ​​ошибку.

Позвольте мне помочь вам на примере класса Adapter, у которого два файла макета разделяются по виду. Тип:

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 {}
}

// который в случае путаницы, какой ресурс или макет полностью заполнят требование, bcoz оба имеют одинаковые идентификаторы кнопки. в случае, если вам нужно использовать:

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

, которые разрешают старую реализацию.

Дайте мне знать, если это работает на вашей стороне?

0 голосов
/ 05 мая 2020

Удалите папку ProjectFolder / build вашего проекта. Убедитесь, что вы закрыли Android Studio, иначе вы не сможете удалить его.

...