93

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

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

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

结果是一样的。有时你可能需要Invalidate Cache and Restart你的 AS 来做这件事。让我知道你的发现。谢谢

快速的解决方案是:(作为最受欢迎的答案,我同意)

  1. 删除 projectFolder\build 删除 projectFolder\debug
  2. 删除项目文件夹\发布
  3. 删除 projectFolder\app\build
  4. 删除 projectFolder\app\build\debug
  5. 删除 projectFolder\app\build\release

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

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

4

26 回答 26

142

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

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

快速的解决方案是:

  1. 删除项目文件夹\构建
  2. 删除项目文件夹\调试*
  3. 删除项目文件夹\发布*
  4. 删除 projectFolder\app\build
  5. 删除 projectFolder\app\build\debug*
  6. 删除 projectFolder\app\build\release*

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

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

更新:

我认为他们今天已经修复了这个错误: 在此处输入图像描述

更新 03.03.2020: 不幸的是,该错误没有修复。

更新 01.04.2020:( 不是 4 月 1 日的玩笑:))

一个月以来,我一直在与 Android Studio 开发人员合作,今天我被告知要使用 JDK 而不是 JRE,因为日志中的一个深层错误是它。

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

当使用分析 - >检查代码修复了所有错误后,我已经成功地使用 JDK 生成了一个签名的 APK,然后使用了 JRE(仅用于测试)。

所以总而言之,这个错误是由于你只能通过Inspect Code工具才能发现的深层错误引起的。

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

来自 AS 支持的其他建议:

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

于 2020-03-02T07:49:50.530 回答
67

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

于 2020-02-26T14:05:36.533 回答
50

升级到最新的Android Studio 3.6.1时遇到的问题

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


只需删除之前编译生成的apk即可。

于 2020-05-09T05:14:50.783 回答
24

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

于 2020-02-27T12:35:14.713 回答
23

更新到 Android Studio 4.1 后,我遇到了类似的问题,对我来说是“条目名称 'classes.dex' 碰撞”。使用“生成签名包/APK”选项构建应用程序时出现错误。

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

于 2020-10-15T07:41:55.837 回答
14

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

如果您没有删除以前生成的 APK,则无效缓存和重建将无济于事

于 2020-09-17T17:30:01.283 回答
9

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

于 2020-04-11T18:55:07.740 回答
6

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

于 2020-08-25T10:42:00.347 回答
5

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

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

于 2021-01-18T14:32:46.983 回答
4

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

  1. 删除项目/构建文件夹
  2. 删除项目/应用程序/构建文件夹
  3. 文件 > 使缓存无效/重新启动
  4. 清洁项目
于 2020-07-27T15:11:43.197 回答
4

我做了一个 Invalidate Cache and Restart 并修复了它。

于 2020-11-26T11:11:01.063 回答
4

我有一个类似的问题。我通过做一个“清洁项目”解决了这个问题,然后是一个构建。

于 2020-11-28T05:41:53.840 回答
4

Build并且Clean Project总是为我解决它。但这是一个真正的痛苦。

于 2021-04-28T02:00:19.120 回答
3

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

如果您要添加元素共享相同 ID 的文件,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 {}
}


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

这启用了旧的实现。

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

于 2020-02-29T20:01:51.033 回答
3

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

于 2020-06-27T06:09:03.793 回答
3

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

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

或删除系统中的旧 APK

于 2020-08-04T07:18:15.077 回答
2

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

于 2021-03-09T14:54:01.197 回答
1

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

于 2020-05-05T07:07:50.037 回答
1

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

Entry name res/interpolator/btn_checkbox_checked_mtrl_animation_interpolator_0.xml collided

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

于 2020-06-08T09:10:07.457 回答
1

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

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

你可以清理你的构建

构建-> 清理项目

于 2020-11-02T10:12:28.453 回答
1

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

于 2020-11-23T04:43:23.557 回答
1

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

这对我有用。

于 2021-02-14T22:26:13.367 回答
0

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

于 2020-11-16T18:19:04.943 回答
0

我所要做的就是重新启动我的系统并转到 Build > Clean Project

于 2020-12-28T00:00:43.480 回答
0

我最近经常遇到这些 d@mned 碰撞错误。这次我只是在我一直在测试的所有四个设备上拔掉了电脑的电源。我有这个...... 条目名称'classes.dex'碰撞 然后我得到这个...... 在5秒内构建成功并且这个......为模块'HTMLSpyII.app'成功生成的APK(s)具有1个构建变体:构建变体'release':定位或分析APK。 :) :)

于 2021-02-09T04:29:44.287 回答
0

我有同样的问题。在问题的评论中,我得到了另一个问题的链接,然后我得到了一个对我有用的解决方案。

我们的项目在专门针对 TeamCity 的 build.gradle(:app) 中有以下几行

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

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

所以我只是添加条件并解决问题!

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

于 2021-07-23T14:48:37.840 回答