进一步了解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.mzph.cn/pingmian/4415.shtml

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

相关文章

(学习日记)2024.04.28:UCOSIII第五十二节:User文件夹函数概览(uC-LIB文件夹)第二部分

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

【八大排序(一)】插入排序与希尔排序

❣博主主页: 33的博客❣ ▶️文章专栏分类:八大排序◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多排序知识 目录 1.前言2.常见排序算法3.稳定性4.插入排序4.1概念4.2直接插入排序4.3希尔排序 5.总结 …

TechTool Pro for mac中文激活版:硬件监测和系统维护工具

TechTool Pro mac帮助用户实现系统硬件监测(CPU、内存、硬盘、网络、USB等)、内存测试、S.M.A.R.T检测、磁盘宗卷扫描、宗卷重建和优化、数据恢复和粉碎等等,定期使用,可以确保您的Mac保持优化和无故障。 TechTool Pro for mac v1…

机器学习笔记(二)回归

一、线性回归 线性回归是一种用于预测的统计方法,特别适用于连续值预测。📈线性回归通过最小化误差的平方和来寻找一个线性关系,用于预测一个变量(因变量)基于一个或多个其他变量(自变量)的值。…

[Kubernetes] 集群重新初始化

文章目录 1.master节点2.worker节点3.查看结果 1.master节点 kubeadm reset清理信息: cd ~ 进入根目录ll -a 查看是否存在.kube文件 rm -rf /root/.kubesystemctl restart docker ## 重启docker systemctl restart kubelet ## 重启kubeletrm -rf /etc/cni/net.d初始化主节点…

【Canvas与艺术】绘制朝鲜国旗

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>绘制朝鲜国旗</title><style type"text/css">…

windows环境下DVWA靶场搭建

目录 一&#xff0c;安装PHPstudy 二&#xff0c;DVWA靶场上传 一&#xff0c;安装PHPstudy 具体安装步骤&#xff0c;请看上篇文章https://blog.csdn.net/m0_72210904/article/details/138258609?spm1001.2014.3001.5501 二&#xff0c;DVWA靶场上传 压缩包&#xff1a;&…

【3GPP IAB】 3GPP支持IAB架构概述

1 概述 IAB用于回传链路的无线传输&#xff0c;对于NR高频尤其重要&#xff0c;3GPP协议讨论了IAB的可能架构和部署方式&#xff0c;一起来看看吧。 2 IAB 功能和接口 IAB尽量重用为接入定义的现有功能和接口。特别是&#xff0c;移动终端(MT)、gNB- DU、gNB- CU、UPF、AMF和S…

虚拟与现实的融合:线上盲盒小程序的创新探索

随着科技的飞速发展&#xff0c;虚拟世界与现实生活之间的界限日益模糊。线上盲盒小程序&#xff0c;作为这一融合趋势的生动体现&#xff0c;以其独特的创新探索&#xff0c;将虚拟的惊喜与现实的体验完美结合&#xff0c;为我们打开了一个全新的购物世界。 线上盲盒小程序的…

VulnHub靶机 DC-9 靶机 详细渗透过程

VulnHub靶机 DC-9 打靶实战 详细渗透过程 目录 VulnHub靶机 DC-9 打靶实战 详细渗透过程一、将靶机配置导入到虚拟机当中二、渗透测试主机发现端口扫描Web渗透SQL注入登入后台文件包含SSH爆破提权 一、将靶机配置导入到虚拟机当中 靶机地址&#xff1a; https://www.vulnhub.…

使用QTcpSocket

(1)客户端每隔10ms向服务器发送一次数字字符串&#xff0c;从0开始。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTcpSocket> #include <QLabel> #include <QTimer> namespace Ui { class MainWindow; }class Mai…

单模与多模光纤:深入解析与应用

在现代通信系统中&#xff0c;光纤技术是不可或缺的一部分&#xff0c;它以其高速度和大容量传输数据而闻名。光纤主要分为两种类型&#xff1a;单模光纤&#xff08;Single-Mode Fiber, SMF&#xff09;和多模光纤&#xff08;Multimode Fiber, MMF&#xff09;。这两种光纤在…

Matplotlib是什么?

一、Matplotlib是什么&#xff1f; Matplotlib是一个Python语言的2D绘图库&#xff0c;它非常广泛地用于数据的可视化。以下是一些主要特点&#xff1a; 多功能性&#xff1a;它允许用户创建各种静态、动态或交互式的图表&#xff0c;如线图、散点图、直方图等。跨平台性&…

计算机视觉——使用OpenCV GrabCut算法从图像中移除背景

GrabCut算法 GrabCut算法是一种用于图像前景提取的技术&#xff0c;由Carsten Rother、Vladimir Kolmogorov和Andrew Blake三位来自英国剑桥微软研究院的研究人员共同开发。该技术的核心目标是在用户进行最少交互操作的情况下&#xff0c;自动从图像中分割出前景对象。 在Gra…

机器学习/算法工程师面试题目与答案-数学基础部分

机器学习/算法工程师面试题目--数学基础部分 一、数学基础1、微积分SGD,Momentum,Adagard,Adam原理L1不可导的时候该怎么办sigmoid函数特性 2、统计学&#xff0c;概率论求 Max(a, b) 期望拿更长的玫瑰花的最好策略最大化工作天数的员工数切比雪夫不等式随机截成三段组成三角形…

信号分解 | RLMD(鲁棒性局部均值分解)-Matlab

分解效果 RLMD(鲁棒性局部均值分解) RLMD(鲁棒性局部均值分解)-Matlab 代码实现 % %% 清除所有变量 关闭窗口 clc clear all close all%% 导入数据 % data = xlsread(Data.xlsx);%% 输入信号%% RLMD分解 %参数进行设置 % options.display =

SpringCloud系列(20)--Ribbon的简介及使用

1、Ribbon的简介 Spring Cloud Ribbon是基于Netflix Ribboh实现的一套客户端负载均衡的工具&#xff0c;简单的说&#xff0c;Ribbon是Netflix发布的开源项目&#xff0c;主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon客户端组件提供一系列完善的配置项如连接超时…

ETL中元数据处理的方式

ETLCloud平台是用于处理从数据抽取、转换、加载到持续数据捕获等一系列数据管理活动。除此之外还支持微服务治理与快速开发&#xff0c;并且具备数据库监听功能&#xff0c;能够以不同的方式监听并同步源数据库表数据到目标系统&#xff0c;比如直接传输、通过ETL流程处理或者传…

交直流充电桩检测的基础知识

交直流充电桩检测是电动汽车充电设施的重要组成部分&#xff0c;其目的是确保充电桩的正常运行&#xff0c;保障电动汽车的安全充电。以下是关于交直流充电桩检测的一些基础知识。 我们需要了解什么是交直流充电桩&#xff0c;简单来说&#xff0c;交直流充电桩是一种为电动汽车…

二维数组打印菱形(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>int main() {//初始化变量值&#xff1b;char arr[5][5] { { , , *, , }, { , *, *, *, },{*, *, *, *, *}, { , *, *, *, …