收到错误消息-创建签名的APK时“条目名称'res / layout / test_toolbar.xml'发生冲突”


17

我今天将Android Studio从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 RestartAS。让我知道你的发现。谢谢

Answers:


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:( 不是4月1日的笑话:)

从一个月开始,我就与Android Studio开发人员一起工作,今天我被告知使用jdk而不是jre,因为日志中的一个深层错误称它为It。

设置了jdk(文件->项目结构-> SDK位置-> JDK位置)而不是jre之后,我遇到了一些其他错误,这些错误未在“构建输出”中显示,因此我运行分析->检查代码并得到了十八个错误例如在布局中引用错误的视图ID,方向错误(hi到tools:ignore="MissingDefaultResource")以及清单错误也具有方向:我读到这是3.6.1中的一些新更新-关于横向或纵向screenOrientation,由Studio通过以下方法快速修复: <activity tools:ignore="LockedOrientationActivity" />

当使用“分析->检查代码”修复所有错误后,我已经成功使用jdk和jre(仅用于测试)生成了带签名的APK。

因此,总而言之,此错误是由深层次的错误引起的,您只能使用Inspect Code工具才能找到。

我认为AS不会认为这是一个bug,我想他们会说这是用于改进代码的新功能。另外,我认为即使没有设置jdk而不是jre,您也应该尝试检查代码。

来自AS支持的其他建议:

顺便说一句,当导出一个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,这是Android Studio的错误,希望他们能尽快解决:)


1
感谢您的答复。我已经做了同样的事情,解决了我的问题。:)
萨达特

1
非常感谢!!经过2.5个小时的奋斗发现了这一点
Kishita Variya

谢谢,像魅力一样工作
Brian

4

我删除了先前的构建变体版本输出,包括APK文件。那就是帮助我的原因


1
我尝试删除整个build目录,但仍然遇到相同的问题。您能详细说明一下您的全部工作吗?
Pusparaj

您是否也要删除项目根目录中的构建目录和app / build目录?在我的项目中,apk的输出路径已更改,我只是删除了它所在的先前的apk文件。
弗拉迪斯拉夫·瓦特鲁什金

1

当您使用自动viewBinding,使用Kotlin进行绑定或使用3.6的viewBinding功能时,就会发生这种情况。

如果您要添加其元素共享相同ID的文件,则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都具有相同的按钮ID。如果您必须使用:

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

启用旧的实现。

让我知道这是否对您有利?


1
抱歉,问题出在构建,调试和发布目录。包括输出json文件。不管怎么说,thhanks您的回复
萨达特

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.