进一步了解android studio 里 AGP,gradle等关系

news2024/11/17 2:57:33

目录

(1) gradle是什么

(2) 工程的jdk版本,及引用包的编译版本的关系 

实践

问题与解决

编译成功与运行成功

编译成功

运行成功


(1) gradle是什么

Gradle是一个构建工具,它是用来帮助我们构建app的,构建包括编译、打包等过程。我们可以为Gradle指定构建规则,然后它就会根据我们的“命令”自动为我们构建app;

什么是AGP, android studio这个版本用来管理 gradle的插件,AGP越新,则随之可支持的gradle版本越高。

    gradle我理解也要依赖jdk ,这一块gradle下依赖的jdk版本,取决 于gradle本身。如果两者不兼容,会造成gradle的功能异常,比如打包失败等问题。

这一块就讲明白了。与工程里代码本身的jdk版本没有任何关系 !

(2) 工程的jdk版本,及引用包的编译版本的关系 

   工程里的编译jdk版本,与引用的jar包的关系 ?

比如 : 

   低版本jdk运行高版本编译jar包失败(class file version 61.0), this version of the Java Runtime class file 52.0
    https://blog.csdn.net/weixin_42668169/article/details/134777681
   由上可以说明,我可以正常编译我的当前 版本,用低的jdk;然后在运行的时候,我选择正确的运行环境,高的jdk版本,如下链接所示,高版本的android sdk对应 高jdk版本。
   这样即保证了编译的成功,又可以在运行的时候以高版本jdk来运行整个工作,jdk可以向下兼容,这样就不会报错。

   工程本身的jdk编译版本:

那么在android studio环境里,  我们调节运行环境,其实也就是调节的


   Android版本与SDK/API版本、JDK对应关系。---以确定运行环境的jdk版本
   https://blog.csdn.net/qq_42690281/article/details/131640670

实践

按以上的思想,我们成功把

源码 (1.8) + aar (jdk11)的+  android23  一起重新构建打包成功,只是在运行的时候,报错,应该是具体的业务关系;将aar恢复 成原 google-webrtc.32006也可以正常地运行。说明这种兼容关系搞清楚 了

问题与解决

源码 (1.8) + aar (jdk17)的+  android24  编译成功的例子

(1) duplicate class

   > Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules jetified-kotlin-stdlib-1.8.10 (org.jetbrains.kotlin:kotlin-stdlib:1.8.10) and jetified-kotlin-stdlib-jdk8-1.7.20 (org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.20)

android studio非业务代码报错 Duplicate class kotlin.collections.jdk8.CollectionsJDK8Kt found in modules。-CSDN博客

implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.0"))

(2)  superclass access check

Cause: superclass access check failed: class butterknife.compiler.ButterKnifeProcessor$RScanner (...

Cause: superclass access check failed: class butterknife.compiler.ButterKnifeProcessor$RScanner (... - 简书 (jianshu.com)

(3) webrtc版本变更引起的不兼容,注释掉

(4)自己手动加的类的功能 ,先注释掉

(5)莫名其妙的不兼容 去掉

编译成功与运行成功

编译成功

运行成功

源码 (1.8) + aar (jdk17)的+  android34

   我的天,运行也成功了!!

可以授权 进入 ,点播拉流与录相; 但还存在 太多兼容问题,毕竟是新包,且我无脑删除了那么多的不兼容,先不管了,毕竟只是为了验证如果去兼容一个最新包。

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

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

相关文章

1.6 Java全栈开发前端+后端(全栈工程师进阶之路)-前置课程Jdbc编程,使用Java通过Jdbc对数据库进行基础操作

原理图 用java代码实现连接数据库(mysql)的操作 因为数据库连接需要使用到API和URL,下面简单介绍下API和URL的概念, API: Application Programming Interface应用程序编程接口,就是一套类库 Java中的AP…

2024中国绿电制氢技术趋势分析报告

来源:ATC & 大东时代 国家级规划《氢能产业发展中长期规划(2021-2035)》出台 • 主要宗旨:明确“能源”的角色定位以及在绿色低碳转型中的作用,为产业发展构建清晰的蓝图。 • 阶段目标设立: • 2025/…

如何不使用代理服务从hugging face上下载大模型?

前言:中国大陆的朋友会发现hugging face经常无法访问了,特别是在服务器上下载大型模型/数据集,如果先在电脑上下载完再传输到服务器上,对于大模型来说会非常麻烦,这篇博客一共提供了三种有效的方法不使用代理服务从hug…

【Java】何为JShell?——有趣的Java学习小工具

前言:上一篇中我们已经看到了如何编译和运行一个Java程序。Java1.9(即Java9)中引入了另一种使用Java的方式。JShell(Java Shell)程序提供了一个“读取-计算-打印循环”(Read-Evaluate-Print Loop,REPL)。当你键入一个J…

【综述】多核处理器芯片

文章目录 前言 Infineon处理器 AURIX™系列 TC399XX-256F300S 典型应用 开发工具 参考资料 前言 见《【综述】DSP处理器芯片》 Infineon处理器 AURIX™系列,基于TriCore内核,用于汽车和工业领域。 XMC™系列,基于ARM Cortex-M内核&…

基于 Evan_song1234 开发,MoonSpaceCat 增补的2D 我的世界,增加双缓冲实现 cmd控制台窗口或 Powershell 流畅运行

游戏玩法: awsd移动 1234567890 各有功能 t 是命令行 q 是刷新 e 是重开 z 是挖 其他还没来及探索代码 代码来源 C我的世界2D控制台版_cminecraft-CSDN博客 其中解决颜色被双缓冲刷新没的方法 参考于自己的博客 用ReadConsoleOutput 解决双缓冲ReadConsol…

短视频素材哪个App最好?短视频素材哪里有免费的?

在数字媒体的黄金时代,富有创意的视频内容已成为吸引观众的关键。高质量的视频素材不仅能增强视觉效果,还能提升整体叙述的力度。以下列出了一系列全球顶尖的视频素材提供网站,它们将为你的广告制作、社交媒体或任何视频项目提供极具影响力的…

Python制作精美表格——plottable

plottable是一个基础matplotlib的绘制精美图形表格的库。他将表格内容美化并转为一张图片 使用前提: 1、原始数据数量较少,可以一屏展示。这个库会将原始表格的所有数据都放到一个图片里,数据太多展示效果较差。 2、pandas读取时会将index列…

vue3步骤条带边框点击切换高亮

如果是div使用clip-path: polygon(0% 0%, 92% 0%, 100% 50%, 92% 100%, 0% 100%, 8% 50%);进行裁剪加边框没实现成功。目前这个使用svg完成带边框的。 形状可自行更改path 标签里的 :d“[num ! 1 ? ‘M 0 0 L 160 0 L 176 18 L 160 38 L 0 38 L 15.5 18 Z’ : ‘M 0,0 L 160,0…

飞腾D2000+X100 TYPE6全国产核心板

飞腾D2000X100 TYPE6核心板 产品概述 飞腾D2000X100 TYPE6核心板为增强型自主控制器核心板,其核心芯片CPU采用飞腾D2000/8核工业版CPU、飞腾桥片X100、双通道DDR4L插槽、PHY芯片等。 产品特点 l 基于飞腾D2000X100桥片 l 丰富的PCIE扩展资源,一路PCIE…

Java设计模式 _结构型模式_过滤器模式

一、过滤器模式 1、过滤器模式 过滤器模式(Filter Pattern)是这一种结构型设计模式。过滤器,顾名思义,就是对一组数据进行过滤,从而最终获取到我们预期的数据。 2、实现思路 (1)、定义过滤器的…

图搜索算法详解与示例代码

在计算机科学领域,图搜索算法是一类用于在图数据结构中查找特定节点或路径的算法。图搜索算法在许多领域都有着广泛的应用,包括网络路由、社交网络分析、游戏开发等。本文将详细介绍几种常见的图搜索算法,包括深度优先搜索(DFS&am…

数据结构四:线性表之带头结点的单向循环链表的设计

前面两篇介绍了线性表的顺序和链式存储结构,其中链式存储结构为单向链表(即一个方向的有限长度、不循环的链表),对于单链表,由于每个节点只存储了向后的结点的地址,到了尾巴结点就停止了向后链的操作。也就…

LeetCode 98.验证二叉搜索树

题目描述 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1&#xff…

服务端不 listen 可以创建 tcp 连接吗

这个问题有三类答案。 上来就撸 linux kernel 源码,折腾半天,哦,终于在 tcp_rcv_state_process 里找到了 tcp_rcv_synsent_state_process 调用,后者包含: if (th->syn) {/* We see SYN without ACK. It is attemp…

如何 “ 一劳永逸 ” 去掉引用网址的小尾巴

引用文章的链接时会出现很长冗余信息,删,删,删……,直到从平流层删到地平线 示例链接 使用 Neat URL(支持 google 系、Firefox)扩展中的【拦截参数】可以去除的这类百无聊赖的小尾巴。 安装后&#xff…

信创 | 信创中间件全览:核心种类与关键组件!

信创产业中的中间件主要包括基础中间件和广义中间件两大类。基础中间件包括交易中间件、消息中间件、应用服务器中间件等,而广义中间件则涵盖了更多种类的中间件产品,以适应不断变化的技术需求。 一、常用的信创中间件包含: 交易中间件&…

20232937文兆宇 2023-2024-2 《网络攻防实践》实践八报告

20232937文兆宇 2023-2024-2 《网络攻防实践》实践八报告 1.实践内容 动手实践任务一 对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下: (1&am…

Eclipse MAT工具分析内存溢出

1、通过dominator_tree可以查看哪些对象大 可以看到com.codex.terry.entity.User对象有57万个 2、打开thread_overview查看内存溢出的代码

PyVista 3D数据可视化 Python 库 简介 含源码

Pyvista是一个用于科学可视化和分析的Python库 ;我认为它适合做一些网格数据的处理; 它封装了VTK(Visualization Toolkit)之上,提供了一些高级接口, 3D数据可视化变得更加简单和易用。 1.安装 pyvista&…