Помилка отримання - "Ім'я вступу" res / layout / test_toolbar.xml "зіткнулося" під час створення підписаного apk


17

Сьогодні я оновив свою андроїд-студію з 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. Дайте мені знати ваші висновки. Дякую

Відповіді:


16

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

У мене така ж проблема після цього оновлення 3.6.

* Швидке рішення: *

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

Тому вам потрібно видалити всі каталоги збирання, налагодження та випуску.

Зауважте, що ви, можливо, не зможете видалити цілі каталоги налагодження та випустити , але ви можете видалити весь вміст.

UPD:

Я думаю, вони сьогодні виправили цю помилку: введіть тут опис зображення

UPD 03.03.2020: На жаль, помилка не виправлена.

UPD 01.04.2020: (Не жарт 1 квітня :))

З місяця я працював з розробниками Android Studio, і сьогодні мені сказали використовувати jdk замість jre, тому що це сказала одна з глибоких помилок у журналах.

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

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

Отже, підсумовуючи, ця помилка викликана через глибокі помилки, про які можна дізнатися лише за допомогою Inspect Codeінструменту.

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

Додаткова рекомендація від служби підтримки AS:

BTW при експорті releaseзбірки ми також виконуємо lintVitalдодаткові перевірки та помилки, позначені як fatal. Ця перевірка є дорогою, тому її не буває в debugскладах


1
Дуже дякую. Я це вже вирішив. Ви впевнені, що це справді стабільна версія?
Саадат

1
@Saadat ні, я перевірив зараз - помилка все ще є.
danyapd

Дуже дякую. Я збирався оновити знову, очікуючи виправлення. @danyapd
Саадат

Я вважаю, що мені також потрібно видалити projectFolder\app\[all flavor folders].
drmrbrewer

1
Дякую, Build > Rebuild Projectвиправлено це для мене в Android Studio 3.6.2.
gregn3

7

Генеруючи apk, перевірте, чи не знаходиться папка призначення, з якої видаліть output.json та app-debug.apk з папки налагодження. Спробуйте створити те саме після цього. AFAIK, це помилка для андроїд-студії, сподіваємось, що вони можуть виправити це незабаром :)


1
Дякую за Вашу відповідь. Я вже зробив те саме і вирішив своє питання. :)
Саадат

1
Дуже дякую!! знайшли це після 2,5 годин боротьби
Кішита Варія

Дякую за це, працював як шарм
Брайан

4

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


1
Я спробував видалити buildкаталог в цілому, все-таки потрапив той самий випуск. Чи можете ви детально розробити те, що ви зробили?
Пуспарай

Ви також видаляєте каталог збірки в корені проекту та каталогу додатків / збірок? У моєму проекті вихідний шлях до apk змінюється, і я просто видаляю попередній файл apk там, де він знаходився.
Владислав Ватрушкін

1

Це трапляється, коли ви використовували функцію автоматичного перегляду прив'язки, прив’язки за допомогою Котліна або функції перегляду палітур 3.6.

У разі, якщо ви додаєте файли, елементи яких мають спільний ідентичний номер, ViewBinding плутає та створює таку помилку.

Дозвольте допомогти вам на прикладі Клас адаптерів, який розділяє два файли компонування за типом перегляду:

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

які дозволяють стару реалізацію.

Дайте мені знати, чи працює це на вашому боці?


1
Вибачте, але проблема була в каталогах збирання, налагодження та випуску. включаючи вихідний файл json. У будь-якому випадку, дякую за вашу відповідь
Saadat

1

У мене була та сама помилка після оновлення андроїд-студії, і я вирішував проблему, лише очищаючи проект (Build> Clean Project)! :)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.