获取错误说 - "Entry name 'res/layout/test_toolbar.xml' collided" while creating signed apk

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

我今天将我的 android 工作室从 3.5.x 更新到 3.6,但出现错误在为构建变体生成签名的 apk 时显示以下消息 - Entry name 'res/layout/test_toolbar.xml' 碰撞 我在整个项目中根本没有任何像这样命名的布局。我有一个名为“stage”的自定义构建变体,每当我尝试构建签名的 apk 时,它总是失败。我算找到任何解决方案了。请帮我解决这个问题。谢谢

更新: 以下这些消息也可能出现同样的问题(正如我在 AS - 3.6.1 - Continues with 4.x.x sometimes ).所以不要担心这些未知的和不可解析的消息。到目前为止,我在生成签名的 apk 时发现了两种新类型的消息:

结果是一样的。有时您可能需要 Invalidate Cache and Restart 您的 AS 为此。让我知道你的发现。谢谢

快速解决方案是:(最流行的答案,我同意)

  1. 删除projectFolder\build删除projectFolder\debug
  2. 删除projectFolder\release
  3. 删除projectFolder\app\build
  4. 删除projectFolder\app\build\调试
  5. 删除projectFolder\app\build\发布

所以你需要删除所有的构建, 调试和发布目录。

请注意,您可能无法删除整个调试和发布目录,但可以删除其中的所有内容。

我删除了构建变体之前的构建输出,包括 APK 文件。这对我有帮助

在生成 apk 时,检查目标文件夹,从中删除调试文件夹中的 output.json 和 app-debug.apk。在此之后尝试构建相同的内容。 据我所知,这是 android 工作室的一个错误,希望他们能尽快解决这个问题 :)

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

如果您要添加其元素共享相同 ID 的文件,ViewBinding 会混淆并产生此类错误。

让我举个例子来帮助你 适配器 class 有两个按视图类型分隔的布局文件:

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.

万一你必须使用:

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

启用旧实现。

让我知道这是否对你有效?

在阅读下面的解决方案之前,请阅读我从 01.04.2020 开始的更新,问题更深,它在你的代码中。

我在 3.6 更新后遇到了同样的问题。

fast的解决方法是:

  1. 删除projectFolder\build
  2. 删除projectFolder\debug*
  3. 删除projectFolder\release*
  4. 删除projectFolder\app\build
  5. 删除projectFolder\app\build\调试*
  6. 删除projectFolder\app\build\release*

因此您需要删除所有的构建、调试和发布目录。

请注意,您可能无法删除整个 debug 和 release 目录,但您可以删除其所有内容。

更新:

我想他们今天已经修复了这个错误:

2020 年 3 月 3 日更新: 不幸的是,该错误并未修复。

2020 年 4 月 1 日更新: (不是 4 月 1 日的笑话:))

从上个月开始我就与 Android Studio 开发人员一起工作,今天我被告知使用 JDK 而不是 JRE,因为日志中的一个严重错误表明它。

设置JDK后(文件->项目结构->SDK位置->JDK位置)而不是JRE,我有一些“构建输出”中未显示的其他错误,因此我 运行 Analyze -> Inspect Code 并得到 EIGHTEEN 错误,例如引用布局中错误的视图 ID、方向错误(hi to tools:ignore="MissingDefaultResource")和清单中的错误也与方向有关:我读到这是 3.6.1 中的一些新更新 - 关于横向或纵向 screenOrientation, Studio 快速修复了这个问题: <activity tools:ignore="LockedOrientationActivity" />

当使用 Analyze -> Inspect Code 修复了所有错误后,我使用 JDK 成功生成了签名 APK,然后使用 JRE(仅用于测试)。

所以总而言之,这个错误是由深度错误引起的,您只能使用 Inspect Code 工具才能找出这些错误。

我想AS不会认为这是一个bug,我想他们会说这是一个改进你代码的新特性。 另外,我认为即使不设置 JDK 而不是 JRE,您也应该尝试检查您的代码。

来自 AS 支持的额外推荐:

顺便说一句,在导出 release 构建时,我们还 运行 lintVital 进行了一些额外的检查,并将一些错误标记为 fatal。此检查很昂贵,因此不会在 debug builds

中发生

我在更新 android studio 后遇到了同样的错误,我只通过清理项目(构建 > 清理项目)解决了这个问题!:)

删除项目的“ProjectFolder/build”文件夹。 请确保您已关闭 Android Studio,否则您将无法删除它。

升级到最新AndroidStudio 3.6.1时遇到的问题

清除缓存,清理项目,删除构建文件夹都没有解决问题。


将之前编译生成的apk删除即可

我在生成签名的 APK 时收到此错误消息。

Entry name res/interpolator/btn_checkbox_checked_mtrl_animation_interpolator_0.xml collided

通过删除现有的 APK 解决了这个问题。不过这是一个非常奇怪的解决方案。

已解决:
只需删除较早的 apk 文件即可。就是这样。
位置将是:YourProjectFolder/app/debug/

这可能有点矫枉过正,但我​​:

  1. 删除 project/build 文件夹
  2. 删除 project/app/build 文件夹
  3. 文件 > 使缓存无效/重新启动
  4. 清理项目

这是由于 Gradle 中更新的配置更改所致。

所以试试File -> File > Invalidate Caches / Restart

或者 删除系统中的旧 APK

我只是删除了 myProject\app\build\outputs\apk\debug 目录中的所有调试 APKs,它对我有用。

此问题已通过删除发布和调试文件夹中现有版本生成的 APK 得到解决。

如果您没有删除之前生成的 APK,则使缓存失效并重新构建将无济于事

更新到 Android Studio 4.1 后,我遇到了类似的问题,对我来说是“条目名称 'classes.dex' 发生冲突”。 使用选项 'Generate Signed Bundle/APK'.

构建应用程序时出现错误

解决方案很简单:在构建时确保 Android Studio 不是 运行 应用程序(停止 运行 然后重试)。

尝试清理您的构建并重建它,然后 运行 项目仍然没有工作然后执行以下操作

文件->无效现金/重启->无效并重启

您可以通过

清理您的构建

构建-> 清理项目

只需删除您计算机上 project path 中的 app>buildbuild 文件夹!

问题是构建引起的。最好的解决方案是清理并重建项目。继续构建并清理项目。

我执行了无效缓存并重新启动并修复了它。

我遇到了类似的问题。我已经通过执行“清理项目”然后构建来解决它。

我所要做的就是重新启动我的系统并转到构建 > 清理项目

在创建签名发布版本然后尝试创建调试版本后,我的项目遇到了类似的问题。

要修复,只需转到菜单“构建”->“清理项目”,然后再次尝试构建。

我最近经常遇到这些 d@mned 碰撞错误。这次我只是拔掉了我测试过的所有四台设备上的计算机。我有这个... 条目名称'classes.dex' 碰撞 然后我得到了这个... 在 5 秒内构建成功 而且这... 已成功为具有 1 个构建变体的模块 'HTMLSpyII.app' 生成 APK:构建变体 'release':找到或分析 APK。 :) :)

要通过 CLI 执行清理,运行 ./gradlew clean/android 目录

这对我有用。

只需删除准备好的编译 APK 文件,即使我们删除它也不起作用,所以请删除 APK @Suraj Gupta 答案是正确的。

BuildClean Project 总能帮我解决。但这真的很痛苦。

我有 the same issue. At issue' comments, I got the link to another issue,然后我找到了适合我的解决方案。

我们的项目在 build.gradle(:app) 处有以下几行专门用于 TeamCity

applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "../../" + outputFileName
    }
}

但它会导致本地构建过程崩溃。

所以我只是添加条件并解决问题![​​=22=]

applicationVariants.all { variant ->
    variant.outputs.all {
        if (rootProject.hasProperty("teamcity"))
            outputFileName = "../../" + outputFileName
    }
}