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

目录

(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.rhkb.cn/news/317522.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django后台项目开发实战一

开发环境使用 Anaconda, IDE 使用 pycharm 第一阶段 创建 Django 项目 在 Anaconda Prompt 中逐步输入下面的命令(之后的所有命令都在这个) 首先创建一个虚拟环境,名称自拟,python 版本我这里使用 3.9.18 关于 python 版本和…

RuoYi-Vue-Plus (SPEL 表达式)

RuoYi-Vue-Plus 中SPEL使用 DataScopeType 枚举类中: /*** 部门数据权限*/DEPT("3", " #{#deptName} #{#user.deptId} ", " 1 0 "), PlusDataPermissionHandler 拦截器中定义了解析器: buildDataFilter 方法中根据注解的…

Swift - 流程控制

文章目录 Swift - 流程控制if-else2. while3. for3.1 闭区间运算符3.2 半开区间运算符3.3 for - 区间运算符用在数组上3.3.1 单侧区间 3.4 区间类型3.5 带间隔的区间值 4. switch4.1 fallthrough4.2 switch注意点 5. 复合条件6. 区间匹配、元组匹配7. 值绑定8. where9. 标签语句…

【C语言】编译与链接

1.翻译环境与运行环境 在ANSI C的任何一种实现中,存在两个不同的环境。 1.翻译环境,在这个环境中源代码被转换为可执行的机器指令(二进制指令) 2.执行环境,它用于实际执行代码 2.翻译环境 那么翻译环境是怎么将源代码…

Java:七大基于比较的排序算法——上(思想+代码实现 超详细!)

冒泡排序、堆排序、插入排序、归并排序、快速排序、选择排序、希尔排序 目录 一、冒泡排序 1、基本思想 2、特征总结 3、代码实现 二、堆排序 1、基本思想 2、特征总结 3、代码实现 三、插入排序 1、基本思想 2、特征总结 3、代码实现 四、选择排序 1、基本思想 …

带宽的理解-笔记

带宽的理解 带宽(频带宽度):是指电磁波最高频率和最低频率的差值,这一段频率被称为带宽。 举例说明 人耳能听到的频率范围是20赫兹到2万赫兹。换句话说,人而只对20赫兹至2万赫兹的声音频率有反应,超出或低于这一频率范围的声音我…

上市企业数字赋能指数数据集-2001到2022年(TF-IDF)

01、数据简介 上市公司数字赋能指数是一个用来衡量上市公司利用数字技术提高业务能力和效率的指标。这个指数反映了上市公司利用大数据、云计算和人工智能等数字技术,高效地利用商业资源和信息,并扩展供应关系的能力。市公司数字赋能指数是一种综合性的…

小米汽车充电枪继电器信号

继电器型号: 参考链接 小米SU7,便捷充放电枪拆解 (qq.com)https://mp.weixin.qq.com/s?__bizMzU5ODA2NDg4OQ&mid2247486086&idx1&sn0dd4e7c9f7c72d10ea1c9f506faabfcc&chksmfe48a110c93f2806f6e000f6dc6b67569f6e504220bec14654ccce7d…

基于Spring Boot的家具销售电商平台设计与实现

基于Spring Boot的家具销售电商平台设计与实现 开发语言:Java框架:springbootJDK版本:JDK1.8数据库工具:Navicat11开发软件:eclipse/myeclipse/idea 系统部分展示 系统功能界面图,在系统首页可以查看首页…

PDF 正确指定页码后,挂载的书签页码对不上

这个问题与我的另一篇中方法一样 如何让一个大几千页的打开巨慢的 PDF 秒开-CSDN博客 https://blog.csdn.net/u013669912/article/details/138166922 另作一篇的原因 一篇文章附带一个与该文章主题不相关的问题时,不利于被遇到该问题的人快速搜索发现以解决其遇到…

JavaScript基础(二)

JS语法结构——引入方式 js很明显可以是一个后缀名为js的文件&#xff0c;js的引入方式和css一样&#xff0c;也有三种方式。 1.外部 使用script表现&#xff0c;只不过增加一个src属性&#xff0c;把js文件的路径src属性中。 <script src "js文件路径">&l…

查看笔记本电池容量/健康状态

1. 打开命令行提示符 快捷键“win R”后输入“cmd” 2. 在命令提示符中输入命令 “powercfg /batteryreport" 并回车 3. 查看文件 最后就可以看到笔记本的电池使用报告了

[华为OD] C卷 5G网络 现需要在某城市进行5G网络建设,已经选取N个地点设置5G基站 200

题目 现需要在某城市进行5G网络建设&#xff0c;已经选取N个地点设置5G基站&#xff0c;编号固定为1到N,接 下来需要各个基站之间使用光纤进行连接以确保基站能互联互通&#xff0c;不同基站之间架设光纤的成 本各不相同&#xff0c;且有些节点之间已经存在光纤相连&#…

mongodb使用debezium

前置 服务器上需要安装jdk11 jdk下载地址 kafka安装 官网下载地址 安装教程 debezium 安装 运行 Debezium 连接器需要 Java 11 或更高版本 Debezium 并不是一个独立的软件&#xff0c;而是很多个 Kafka 连接器的总称。这些 Kafka 连接器分别对应不同的数据库&#xff0c;…

十一、大模型-Semantic Kernel与 LangChain 的对比

Semantic Kernel 与 LangChain 的对比 Semantic Kernel 和 LangChain 都是用于开发基于大型语言模型&#xff08;LLM&#xff09;的应用程序的框架&#xff0c;但它们各有特点和优势。 基本概念和目标 Semantic Kernel 是一个由微软开发的轻量级 SDK&#xff0c;旨在帮助开发…

uniapp 自定义 App启动图

由于uniapp默认的启动界面太过普通 所以需要自定义个启动图 普通的图片不可以过不了苹果的审核 所以使用storyboard启动图 生成 storyboard 的网站&#xff1a;初雪云-提供一站式App上传发布解决方案

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

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

C++浮点数format时的舍入问题

C浮点数format时的舍入问题 首先有这样一段代码&#xff1a; #include <iostream> #include <stdio.h> using namespace std;int main() {cout << " main begin : " << endl;printf("%.0f \r\n", 1.5);printf("%.0f \r\n&…

jenkins教程

jenkins 一、简介二、下载安装三、配置jdk、maven和SSH四、部署微服务 一、简介 Jenkins是一个流行的开源自动化服务器&#xff0c;用于自动化软件开发过程中的构建、测试和部署任务。它提供了一个可扩展的插件生态系统&#xff0c;支持各种编程语言和工具。 Jenkins是一款开…

ROM修改进阶教程------如何去除安卓机型系统的开机向导 几种操作步骤解析

在和很多工作室定制化系统中。手机在第一次启动的时候系统都会进入设置向导,虽然可以设置手机的基本配置。但有很多客户需要去除手机的开机向导来缩短开机时间。确保手机直接进入工作状态。那么今天的教程针去除对开机向导的几种方法做个解析。机型很多版本不同。操作也有不同…