获取错误说 - "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 时发现了两种新类型的消息:
Entry name 'kotlin/collections/MapWithDefault.kotlin_metadata' collided
Access Denied
结果是一样的。有时您可能需要 Invalidate Cache and Restart
您的 AS 为此。让我知道你的发现。谢谢
快速解决方案是:(最流行的答案,我同意)
- 删除projectFolder\build删除projectFolder\debug
- 删除projectFolder\release
- 删除projectFolder\app\build
- 删除projectFolder\app\build\调试
- 删除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的解决方法是:
- 删除projectFolder\build
- 删除projectFolder\debug*
- 删除projectFolder\release*
- 删除projectFolder\app\build
- 删除projectFolder\app\build\调试*
- 删除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/
这可能有点矫枉过正,但我:
- 删除 project/build 文件夹
- 删除 project/app/build 文件夹
- 文件 > 使缓存无效/重新启动
- 清理项目
这是由于 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>build
和 build
文件夹!
问题是构建引起的。最好的解决方案是清理并重建项目。继续构建并清理项目。
我执行了无效缓存并重新启动并修复了它。
我遇到了类似的问题。我已经通过执行“清理项目”然后构建来解决它。
我所要做的就是重新启动我的系统并转到构建 > 清理项目
在创建签名发布版本然后尝试创建调试版本后,我的项目遇到了类似的问题。
要修复,只需转到菜单“构建”->“清理项目”,然后再次尝试构建。
我最近经常遇到这些 d@mned 碰撞错误。这次我只是拔掉了我测试过的所有四台设备上的计算机。我有这个...
条目名称'classes.dex' 碰撞
然后我得到了这个...
在 5 秒内构建成功 而且这...
已成功为具有 1 个构建变体的模块 'HTMLSpyII.app' 生成 APK:构建变体 'release':找到或分析 APK。
:) :)
要通过 CLI 执行清理,运行 ./gradlew clean
在 /android
目录
这对我有用。
只需删除准备好的编译 APK 文件,即使我们删除它也不起作用,所以请删除 APK @Suraj Gupta 答案是正确的。
Build
和 Clean 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
}
}
我今天将我的 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 时发现了两种新类型的消息:
Entry name 'kotlin/collections/MapWithDefault.kotlin_metadata' collided
Access Denied
结果是一样的。有时您可能需要 Invalidate Cache and Restart
您的 AS 为此。让我知道你的发现。谢谢
快速解决方案是:(最流行的答案,我同意)
- 删除projectFolder\build删除projectFolder\debug
- 删除projectFolder\release
- 删除projectFolder\app\build
- 删除projectFolder\app\build\调试
- 删除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的解决方法是:
- 删除projectFolder\build
- 删除projectFolder\debug*
- 删除projectFolder\release*
- 删除projectFolder\app\build
- 删除projectFolder\app\build\调试*
- 删除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/
这可能有点矫枉过正,但我:
- 删除 project/build 文件夹
- 删除 project/app/build 文件夹
- 文件 > 使缓存无效/重新启动
- 清理项目
这是由于 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>build
和 build
文件夹!
问题是构建引起的。最好的解决方案是清理并重建项目。继续构建并清理项目。
我执行了无效缓存并重新启动并修复了它。
我遇到了类似的问题。我已经通过执行“清理项目”然后构建来解决它。
我所要做的就是重新启动我的系统并转到构建 > 清理项目
在创建签名发布版本然后尝试创建调试版本后,我的项目遇到了类似的问题。
要修复,只需转到菜单“构建”->“清理项目”,然后再次尝试构建。
我最近经常遇到这些 d@mned 碰撞错误。这次我只是拔掉了我测试过的所有四台设备上的计算机。我有这个... 条目名称'classes.dex' 碰撞 然后我得到了这个... 在 5 秒内构建成功 而且这... 已成功为具有 1 个构建变体的模块 'HTMLSpyII.app' 生成 APK:构建变体 'release':找到或分析 APK。 :) :)
要通过 CLI 执行清理,运行 ./gradlew clean
在 /android
目录
这对我有用。
只需删除准备好的编译 APK 文件,即使我们删除它也不起作用,所以请删除 APK @Suraj Gupta 答案是正确的。
Build
和 Clean 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
}
}