Getting error mengatakan - “Nama entri 'res / tata letak / test_toolbar.xml' bertabrakan” saat membuat apk yang ditandatangani

17

Saya telah memperbarui studio android saya dari 3.5.x ke 3.6 hari ini dan mendapatkan kesalahan saat membuat apk yang ditandatangani untuk varian build yang menampilkan pesan berikut - Nama entri 'res / layout / test_toolbar.xml' bertabrakan Saya tidak memiliki tata letak bernama seperti ini satu di seluruh proyek sama sekali. Saya memiliki varian build khusus bernama " stage " dan setiap kali saya mencoba membangun apk yang ditandatangani, selalu gagal. Saya menghitung sudah menemukan solusi. Tolong bantu saya dengan masalah ini. Terima kasih

Pembaruan: Masalah yang sama dapat terjadi dengan pesan-pesan berikut ini juga (Seperti yang saya temukan di AS - 3.6.1 ). Jadi jangan khawatir tentang pesan semacam ini yang tidak diketahui dan tidak dapat diselesaikan. Sejauh ini saya menemukan dua jenis pesan baru saat membuat apk yang ditandatangani:

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

Solusinya sama. Terkadang Anda mungkin perlu Invalidate Cache and RestartSA Anda untuk ini. Biarkan saya tahu temuan Anda. Terima kasih

Saadat
sumber

Jawaban:

16

Sebelum membaca solusi di bawah ini, silakan baca pembaruan saya dari 01.04.2020, masalahnya lebih dalam dan ada dalam kode Anda .

Saya mendapat masalah yang sama setelah pembaruan 3.6 ini.

* Solusi cepat adalah: *

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

Jadi, Anda perlu menghapus semua direktori build, debug, dan lepaskan.

Perhatikan bahwa Anda mungkin tidak dapat menghapus seluruh debug dan melepaskan direktori, tetapi Anda dapat menghapus semua isinya.

UPD:

Saya pikir mereka telah memperbaiki bug ini hari ini: masukkan deskripsi gambar di sini

UPD 03.03.2020: Sayangnya, bug tidak diperbaiki.

UPD 01.04.2020: (Bukan lelucon 1 April :))

Sejak bulan saya bekerja dengan pengembang Android Studio dan hari ini saya diberitahu untuk menggunakan jdk daripada menggunakan jre, karena salah satu kesalahan yang mendalam dalam log mengatakan itu.

Setelah menetapkan jdk ( File-> Struktur Proyek-> Lokasi SDK-> Lokasi JDK ) alih-alih jre, saya punya beberapa kesalahan lain yang tidak ditampilkan dalam "build output" jadi saya menjalankan Analisis -> Periksa Kode dan dapatkan kesalahan EIGHTEEN seperti merujuk pada id tampilan yang salah dalam tata letak, kesalahan dengan orientasi (hi to tools:ignore="MissingDefaultResource") dan kesalahan dalam manifes juga dengan orientasi: Saya membaca bahwa ini adalah beberapa pembaruan baru di 3.6.1 - tentang lanskap atau potret screenOrientation, diperbaiki cepat oleh Studio dengan ini: <activity tools:ignore="LockedOrientationActivity" />

Ketika semua kesalahan diperbaiki dengan Menganalisa -> Periksa Kode, saya berhasil membuat APK yang ditandatangani menggunakan jdk dan kemudian menggunakan jre (hanya untuk pengujian).

Jadi secara ringkas, bug ini disebabkan karena kesalahan mendalam yang hanya dapat Anda temukan dengan Inspect Codealat.

Saya pikir AS tidak akan berpikir bahwa ini adalah bug, saya pikir mereka akan mengatakan bahwa ini adalah fitur baru untuk meningkatkan kode Anda. Juga saya pikir Anda harus mencoba memeriksa kode Anda bahkan tanpa menetapkan jdk, bukan jre.

Rekomendasi tambahan dari dukungan AS:

BTW saat mengekspor releasebangunan, kami juga menjalankan lintVitalyang melakukan beberapa pemeriksaan tambahan dan memiliki beberapa kesalahan ditandai sebagai fatal. Pemeriksaan ini mahal sehingga tidak terjadi pada debugbangunan

danyapd
sumber
1
Terima kasih banyak. Saya sudah menyelesaikannya. Apakah Anda yakin ini versi stabil (sungguh)?
Saadat
1
@ Saadat tidak, saya sudah memeriksa sekarang - bug masih ada.
danyapd
Terima kasih banyak. Saya akan memperbarui lagi mengharapkan perbaikan. @danyapd
Saadat
Saya menemukan bahwa saya harus menghapus projectFolder\app\[all flavor folders]juga.
drmrbrewer
1
Terima kasih, sudah Build > Rebuild Projectdiperbaiki untuk saya, di Android Studio 3.6.2.
gregn3
7

Saat membuat apk, periksa folder tujuan, dari mana hapus output.json dan app-debug.apk dari folder debug. Coba bangun yang sama setelah ini. AFAIK, ini adalah bug untuk studio android, semoga mereka segera memperbaikinya :)

Ameena Shafeer
sumber
1
Terimakasih atas tanggapan Anda. Saya sudah melakukan hal yang sama dan menyelesaikan masalah saya. :)
Saadat
1
Terima kasih banyak!! menemukan ini setelah 2,5 jam perjuangan
Kishita Variya
Terima kasih untuk ini, bekerja seperti pesona
Brian
4

Saya menghapus output build sebelumnya untuk varian build, termasuk file APK. Itu yang membantu saya

Vladislav Vatrushkin
sumber
1
Saya mencoba menghapus builddirektori secara keseluruhan, masih mendapat masalah yang sama. Bisakah Anda menguraikan apa yang Anda lakukan secara penuh?
Pusparaj
Apakah Anda menghapus direktori bangunan di root proyek dan direktori app / build juga? Dalam jalur keluaran proyek saya apk diubah dan saya cukup menghapus file apk sebelumnya di mana ia berada.
Vladislav Vatrushkin
1

Itu terjadi ketika Anda menggunakan Binding view otomatis, Binding menggunakan Kotlin atau fitur viewBinding 3,6.

Dalam hal ini, Anda menambahkan file yang elemennya berbagi id yang sama, ViewBinding membingungkan dan membuat kesalahan seperti itu.

Biarkan saya membantu Anda dengan contoh kelas Adapter yang memiliki dua file tata letak yang dipisahkan oleh Jenis tampilan:

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

// yang dalam hal membingungkan sumber daya atau tata letak penuh mengisi persyaratan karena keduanya memiliki id tombol yang sama. jika Anda harus menggunakan:

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

yang memungkinkan implementasi lama.

Beri tahu saya jika ini berhasil di pihak Anda?

Jatin Sahgal
sumber
1
Maaf, tetapi masalahnya ada pada direktori build, debug, dan release. termasuk file output json. Bagaimanapun, terima kasih atas balasan Anda
Saadat
1

Saya memiliki kesalahan yang sama setelah memperbarui studio android dan saya memperbaiki masalahnya dengan hanya membersihkan proyek (Build> Clean Project)! :)

Agathe Casgrain-Cyr
sumber