Android Execution failed for task ‘:app:mergeDebugJavaResource

news2025/1/31 8:13:57

错误提示

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeDebugJavaResource'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction
   > 2 files found with path 'kotlin/kotlin.kotlin_builtins' from inputs:
      - E:\202112\gradle-repository\caches\transforms-3\eec51480f0c4097df5888fd5dc97d23a\transformed\jetified-unityLibrary-release\jars\classes.jar
      - E:\202112\gradle-repository\caches\transforms-3\b3ae48471aeb3840f38fca5b419d2ac3\transformed\jetified-kotlin-stdlib-1.7.10.jar
     Adding a packagingOptions block may help, please refer to
     https://developer.android.com/reference/tools/gradle-api/7.3/com/android/build/api/dsl/ResourcesPackagingOptions
     for more information

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

原因:

App项目依赖的三方AAR,而AAR中编译后的字节码class.jar包含相同的kotlin-stdlib-1.7.10.jar文件,导致资源merge出现异常。官方给出了推荐的解决方案。

1.方案一 配置exclude策略

首先需要了解 Maven坐标(GAV)的查找详解
GAV坐标是用来定位Maven仓库中指定资源位置适应的一套规则。

  • groupId:定义当前Maven组织名称
  • artifactId:定义实际项目名称
  • version:定义当前项目的当前版本

配置exclude需要配合着GAV坐标来使用,比如下面配置

dependencies {
    implementation('com.github.bumptech.glide:glide:4.13.2') {
        exclude group: 'com.github.bumptech.glide', module: 'annotations
    }
}

可以排除com.google.guava:guava所有的传递依赖,只依赖显式声明的依赖项

dependencies {
    implementation('com.google.guava:guava:23.0') {
        transitive = false
    }
}

默认情况下,依赖com.github.bumptech.glide:glide:4.13.2同时会同时依赖红框中的传递依赖项。但是,有些传递项用不到,就可以使用 exclude取消传递依赖项。
在这里插入图片描述
在工程目录下可以找到相关的依赖
在这里插入图片描述
在这里插入图片描述
这里的annotations项目中没有使用,就想移除。按照上面的配置重新构建项目,就会发现的annotations:4.13.2 就被移除了。

tips:
这种方式仅仅可以处理单个依赖项的依赖的传递,如果有其他依赖项有exclude 的依赖,最终还是会打包到apk中的。

如果需要自动排除在上声明的所有依赖项的传递依赖项。(官方例子)

configurations {
    implementation {
        exclude group: 'commons-collections', module: 'commons-collections'
    }
}

dependencies {
    implementation 'commons-beanutils:commons-beanutils:1.9.4'
    implementation 'com.opencsv:opencsv:4.6'
}

2.方案二 配置picker策略

顶部贴的代码是项目构建时报错问题,我们打开E:\202112\gradle-repository\caches\transforms-3\eec51480f0c4097df5888fd5dc97d23a\transformed\jetified-unityLibrary-release\jars\classes.jar,aar目录class.jar 发现内部包含kotlin相关目录,和以 kotlin_builtins结尾的文件,这些文件在app主模块中已经包含,所有红圈中的内容不需要打入apk包中,或者进行ignore处理。
在这里插入图片描述
什么是.kotlin_builtins文件

使用这些文件主要有两种场景:

1.编译器从类路径上的 kotlin-stdlib 中查找它们以确定哪些内置声明可用
2.反射库 (kotlin-reflect) 将这些文件作为资源加载,以为内置声明提供反射功能。例如,String::class.members 返回类 kotlin.String
的所有成员,与 Kotlin 编译器看到这些成员的方式完全相同(尽管事实上存在没有 kotlin/String.class
文件,它被删除为字节码中的 java.lang.String

应用内配置文件路径
/app/build.gradle


android {
    packagingOptions {
        pickFirst "kotlin/kotlin.kotlin_builtins"
        pickFirst "kotlin/ranges/ranges.kotlin_builtins"
        pickFirst "kotlin/reflect/reflect.kotlin_builtins"
        pickFirst "kotlin/collections/collections.kotlin_builtins"
        pickFirst "kotlin/annotation/annotation.kotlin_builtins"
        pickFirst "kotlin/coroutines/coroutines.kotlin_builtins"
        pickFirst "kotlin/internal/internal.kotlin_builtins"
        pickFirst "DebugProbesKt.bin"
        resources {
            excludes += ['META-INF/gradle/incremental.annotation.processors']
        }
    }
}

3.方案三 配置 merge策略

Gradle 官方文档
Android Plugin DSL Refereence

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/396562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

不写代码、年薪百万,带你玩赚ChatGPT提示工程-提示应用程序

文章目录前言一、数据生成二、PAL (Program-Aided Language Models): Code as Reasoning总结前言 随着ChatGPT的大火,提示工程在大模型中的重要性不言而喻,本文参考国外Prompt Engineering Guide完成国内中文版本的《提示工程指南》,希望能够…

一文读懂倒排序索引涉及的核心概念

基础概念相信对于第一次接触Elasticsearch的同学来说,最难理解的概念就是倒排序索引(也叫反向索引),因为这个概念跟我们之前在传统关系型数据库中的索引概念是完全不同的!在这里我就重点给大家介绍一下倒排序索引&…

DOTA双功能螯合剂127985-74-4,p-SCN-Bn-DOTA,实验室科研试剂

p-SCN-Bn-DOTA产品描述:p-SCN-Bn-DOTA用于标记多肽的双功能螯合剂,同时螯合放射性核素和连接单克隆抗体。DOTA 的全名是 1,4,7,10-Tetraazacyclododecane-1,4,7,10-tetraacetic acid,中文名称为 1,4,7,10-四氮杂环十二烷-四乙酸,其…

Linux中断操作

一、thread_irq在内核中, 除了可以通过request_irq() 、 devm_request_irq()申请中断以外, 还可以通过以下二个函数申请( 它们比request_irq和devm_request_irq多了一个参数thread_fn)。 用这两个API申请中断的时候, 内核会为相应的中断号分配…

steam海外道具搬运,2个月变现1.6万,真的假的?

这几年的环境,让我这个身负房贷的房奴,实在是喘不过来气! 也是无意间在朋友圈看到,之前突然裸辞的同事,不知道干什么发了财,竟然自己开了公司! 几经询问才知道,他就是利用steam海外…

微内核架构的理解

什么是微内核架构 相信大家都听说过微内核架构,也或多或少做过一些类似于微内核架构的设计,为了可以更好的设计出微内核的架构,我们了解下什么是微内核架构。 说到微内核架构,大家首先会想到的是Eclips、IDEA、OSGI、Spring Plugi…

CAD连续标注怎么操作?CAD连续标注尺寸命令使用技巧

CAD标注工具可以在图形中创建多种标注,并可对标注样式进行修改或编辑。但是有些新手设计师在绘图过程中,不知道CAD连续标注怎么操作,其实很简单,本节内容就给大家分享一下浩辰CAD软件中CAD连续标注尺寸命令的使用技巧吧&#xff0…

005+limou+HTML——(5)HTML图片和HTML超链接

1、图片标签<img> &#xff08;1&#xff09;图片标签属性 [src]&#xff1a;用于指定这个图片所在的路径&#xff0c;常使用相对路径&#xff0c;比较少使用绝对路劲。如果图片路径有错误的话&#xff0c;就会发生图片显示错误[alt]&#xff1a;用于指定图片的提示文字…

三天吃透mybatis面试八股文

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/…

HDFS读数据流程

1&#xff09;客户端通过Distributed FileSystem向NameNode请求下载文件&#xff0c;NameNode通过查询元数据&#xff0c;找到文件块所在的DataNode地址。 2&#xff09;挑选一台DataNode&#xff08;就近原则&#xff0c;然后随机&#xff09;服务器&#xff0c;请求读取数据…

蚂蚁感冒(简单数论)

长 100 厘米的细长直杆子上有 n 只蚂蚁。它们的头有的朝左&#xff0c;有的朝右。每只蚂蚁都只能沿着杆子向前爬&#xff0c;速度是 1 厘米/秒。当两只蚂蚁碰面时&#xff0c;它们会同时掉头往相反的方向爬行。这些蚂蚁中&#xff0c;有 1 只蚂蚁感冒了。并且在和其它蚂蚁碰面时…

编译错误:rpcndr.h(192,14): error C2872: “byte”: 不明确的符号

Windows上使用C11 编译出现错误1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared\rpcndr.h(192,14): error C2872: “byte”: 不明确的符号1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared\rpcndr.h(191,23): message : 可…

第十章 opengl之光照(投光物)

OpenGL投光物平行光点光源衰减聚光平滑/软化边缘投光物 当前光线都是来自空间的一个点。但实际&#xff0c;我们有很多种类的光照&#xff0c;将光投射到物体的光源叫做投光物。需要讨论几种不同类型的投光物。大致为&#xff1a;定向光&#xff0c;点光源&#xff0c;聚光等 …

Shell编程:轻松掌握入门级Shell脚本,成为Shell高手

文章目录前言一. 实验环境二. shell基础入门精讲2.1 什么是shell脚本&#xff1f;2.2 shell的种类2.3 脚本案例2.3.1 打印 hello-word案例2.3.2 统计指定目录下的文件数和目录数2.4 shell脚本编写规范总结前言 &#x1f3e0;个人主页&#xff1a;我是沐风晓月 &#x1f9d1;个人…

微服务架构(小白教学1)

相信大家吃饭的时候肯定是很苦恼打饭之慢&#xff0c;在自己饥肠辘辘的时候&#xff0c;面对自己喜欢吃的食物窗口却如同有百万大军虎视眈眈&#xff0c;自己内心的煎熬可想而知有时候在想这么美味的食物&#xff0c;为什么窗口就只开一个呢&#xff1f;于是你告诉了你的爸爸&a…

浅谈运维工程师的开发能力的培养

写在前面 本文已获得作者授权&#xff0c;作者的博客地址&#xff1a;https://www.cuiliangblog.cn/ 原文链接&#xff1a;浅谈运维工程师的开发能力的培养 一、运维工程师发展路线 1. 传统运维 侧重点是解决具体的问题。要求具备扎实的底层的知识储备&#xff0c;如网络、l…

安卓 Frament + ViewPager使用示例

1. 组成架构 整个架构被包在一个外部Fragment之中&#xff0c;也可以放在一个Activity之中&#xff0c;随意。外部的fragment包含了两个组件&#xff0c;即途中的ViewPager和TabLayoutViewPager要套上一个FragmentStatePagerAdapter &#xff0c;适配器负责new出一个个fragment…

基于Jetson NX的模型部署

系统安装 系统安装过程分为3步&#xff1a; 下载必要的软件及镜像 Jetson Nano Developer Kit SD卡映像 https://developer.nvidia.com/jetson-nano-sd-card-image Windows版SD存储卡格式化程序 https://www.sdcard.org/downloads/formatter_4/eula_windows/ 镜像烧录工具…

嵌入式C语言九大数据结构操作方式详解

在C语言的开发过程中&#xff0c;灵活使用数据结构&#xff0c;对提高编程效率有极大的帮助。 目录 1 数组 2 链表 3 跳表 4 栈 5 队列 6 树 7 堆 8 散列表 9 图 10 总结 数据结构想必大家都不会陌生&#xff0c;对于一个成熟的程序员而言&#xff0c;熟悉和掌握数据…

【C++、C++11】列表初始化、右值引用

文章目录&#x1f4d6; 前言1. 统一的列表初始化1.1 { } 花括号初始化&#xff1a;1.2 std::initializer_list&#xff1a;2. 右值引用2.1 什么是左值和右值&#xff1a;2.2 右值的分类&#xff1a;2.3 左值引用和右值引用的比较2.3 右值的使用场景&#xff1a;2.4 新的类功能&…