android – Getting error says – "Entry name 'res/layout/test_toolbar.xml' collided" while creating signed apk-ThrowExceptions

Exception or error:

I have updated my android studio from 3.5.x to 3.6 today and getting error while generating signed apk for build variant showing the following message – Entry name ‘res/layout/test_toolbar.xml’ collided
I don’t have any layout named like this one in the whole project at all. I have custom build variant named “stage” and whenever I am trying to build an signed apk, it always fails. I count find any solution yet. Please help me with this issue. Thanks

Update:
Same issue can be occured with these following messages too (As I found it in AS – 3.6.1). So don’t worry about these kind of unknown and not resolvable messages. So far I found two new type of messages while generating signed apk:

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

Solution is the same. Sometimes you may need to Invalidate Cache and Restart your AS for this. Let me know your findings. Thanks

How to solve:

Before reading solution below, please read my update from 01.04.2020, the problem is deeper and it is in your code.

I’ve got the same problem after this 3.6 update.

*The fast solution is:*

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

So you need to delete all of build, debug and release directories.

Note that you may be not able to delete whole debug and release directories, but you can delete all of it contents.

UPD:

I think they have fixed this bug today:
enter image description here

UPD 03.03.2020:
Unfortunatelly, bug doesn’t fixed.

UPD 01.04.2020:
(Not 1st April joke:) )

Since month I worked with Android Studio developers and today I was told to use jdk instead of using jre, because one of deep errors in logs said It.

After setting jdk (File->Project Structure->SDK Location->JDK Location) instead of jre, I’ve got some another errors which were not showed in “build output” so I run Analyze -> Inspect Code and got EIGHTEEN errors such as refering to wrong view id in layouts, errors with orientation (hi to tools:ignore="MissingDefaultResource") and errors in manifest also with orientation: I read that this is some new update in 3.6.1 – about landscape or portrait screenOrientation, fixed fast by Studio with this:
<activity
tools:ignore="LockedOrientationActivity" />

When all of errors were fixed with Analyze -> Inspect Code, I have succesfully generated signed APK using jdk and then using jre (just for test).

So in summary, this bug caused because of deep errors which you can find out only with Inspect Code tool.

I think AS will not think that this a bug, I think they will said that this is a new feature for improving your code.
Also I think you should try to inspect your code even without setting jdk instead of jre.

Additional recommendation from AS support:

BTW when exporting a release build, we also run lintVital which does some extra checks and have some errors marked as fatal. This check is expensive so it does not happen in debug builds

###

While generating the apk, check for the destination folder, from which delete output.json and app-debug.apk from debug folder. Try building the same after this.
AFAIK, it is a bug for android studio, hope they might fix this soon 🙂

###

I deleted the previous build outputs for build variant, including APK file. That’s what helped me

###

I had the same error after updating android studio and I fix the problem by only cleaning the project (Build > Clean Project) !:)

###

It happen when you used auto viewBinding, Binding using Kotlin or viewBinding feature of 3.6.

In case, you are adding files whose element share same id’s, ViewBinding confuse and create such error.

Let me help you by example
Adapter class which have two layout file separating by view Type :

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

// which in case confusing which resource or layout full fill the requirement bcoz both have same ids of button.
in case you have to use :

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

which enable the old implementation.

Let me know if this working on your side?

###

Delete “ProjectFolder/build” folder of your project.
Make sure you Have Closed Android Studio , otherwise you would unable to delete it.

###

Problems encountered when upgrading to the latest Android studio 3.6.1

Clearing the cache, clean project, and deleting the build folder did not solve the problem.


Just delete the apk generated by the previous compilation.

Leave a Reply

Your email address will not be published. Required fields are marked *