react-native项目安卓版本升级 compileSdkVersion 29->31
因为 react-native-ble-manager添加过程及碰到的问题
依赖
https://github.com/innoveit/react-native-ble-manager
参考:https://blog.csdn.net/withings/article/details/71378562
iOS
按react-native-ble-manager
文档在 【Info.plist】加了key之后能正常使用了
Android
坑大了!!!
当前项目的 compileSdkVersion = 29
按文档配置了安卓 Manifest文件,编译通过。
1.运行报变量不存在
Manifest.permission.BLUETOOTH_CONNECT

查了一下,应该是这个问题
https://blog.csdn.net/minusn/article/details/128660803

在依赖包里确认了一下,的确是版本问题

看了下当前项目的版本 compileSdkVersion = 29 。
救命,要升级。
2.升级
那就只能升级了。查了下31对应的buildToolsVersion,直接用了。
配置了
buildToolsVersion = "31.0.0"minSdkVersion = 21compileSdkVersion = 31targetSdkVersion = 31
编译通过,运行报错
Failed to find Build Tools revision 31.0.0
Install Build Tools 31.0.0 and sync project
Upgrade plugin to version 7.3.1 and sync project

ok 莫名其妙 upgrade plugin 也要升级。
然后,就开始有一些老的兼容性的问题来了

compile project(':react-native-video')implementation "androidx.appcompat:appcompat:1.0.0"
又查了一下
implementation project(':react-native-video')implementation "androidx.appcompat:appcompat:1.0.0"
在 Gradle 中,compile 是一种用于指定依赖项的关键字,它用于在构建项目时包含特定的库或模块。然而,从 Gradle 4.0开始,官方建议将 compile 替换为 implementation 或 api(在某些特定情况下)
下一个报错

看了下报错位置,应该是不支持compile的问题,但是不知道咋改。查了一圈,没看到配置怎么改的,只能改成implementation 试试
// 原来的
task copyDownloadableDepsToLibs(type: Copy) {from configurations.compileinto 'libs'
}
// 修改后的
task copyDownloadableDepsToLibs(type: Copy) {from configurations.implementationinto 'libs'
}
反正目前编译这里过了,暂时现在这样
下一个报错


升级了gradle之后, 插件Maven 已经改名为 maven-pulish
相关的expo的组件都需要升级,不然引用都不兼容
下一个报错
react-native 相关包的语法不兼容了

下一个报错

Preferences->Android SDK->SDK Tools 安装对应的工具

下一个报错

The Android Gradle plugin supports only Kotlin Gradle plugin version 1.5.20 and higher.
升级react-native-amap3d
下一个报错

UIManagerModule.ViewManagerResolver viewManagerResolver
下一个报错
(React Native): Execution failed for task ':app:generatePackageList'
查了查,发现是gradle不兼容,那么只能在一开始gradle升级不那么激进了,那重头来一下吧。
https://stackoverflow.com/questions/67093053/react-native-execution-failed-for-task-appgeneratepackagelist
现有RN 0.63.0 不支持 gradle 7 https://github.com/react-native-community/cli/pull/1396
重新开始
先从最小的升级开始
Android Gradle 插件版本与 Gradle 版本 对照表
https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh-cn
先把Android Gradle 插件版本从4.0.1 升到4.1.0
编译之后报错
node_modules/expo-image-picker/android/src/main/java/expo/modules/imagepicker/tasks/VideoResultTask.kt: (30, 112): Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type String?
应该是 android 30 之后 kotlin编译检查严格
https://blog.csdn.net/shulianghan/article/details/118932388
升级一下 expo-image-picker
下一个报错

看起来是重复依赖了,尝试一下排除包
https://stackoverflow.com/questions/63180463/multiple-files-for-cameraview-while-build-app-for-android-react-native
换了一下 expo-camera的包
下一个报错
Targeting S+ (version 31 and above) requires that an explicit value for android
尝试了一下,https://blog.csdn.net/kuanxu/article/details/127089357,降级targetSdkVersion,在真机运行成功了
版本对应关系
安卓版本与API level的对应关系
https://developer.android.google.cn/guide/topics/manifest/uses-sdk-element#ApiLevels

Android Gradle 插件版本与 Gradle 版本 对照表
https://developer.android.google.cn/studio/releases/gradle-plugin?hl=zh-cn
Android Gradle 插件版本与 android API Level 的对照表

虽然Android Gradle在支持范围内,但的确编译不通过,建议从最小的升级开始尝试
相关文章:
react-native项目安卓版本升级 compileSdkVersion 29->31
因为 react-native-ble-manager添加过程及碰到的问题 依赖 https://github.com/innoveit/react-native-ble-manager 参考:https://blog.csdn.net/withings/article/details/71378562 iOS 按react-native-ble-manager 文档在 【Info.plist】加了key之后能正常使用…...
【学习笔记】目标跟踪领域SOTA方法比较
目录 前言方法1 TraDeS:2 FairMOT:3 SMILEtrack:4 ByteTrack: 前言 常用于行人跟踪的多目标跟踪数据集包括:MOT 15/16/17/20、PersonPath22等… 为更好比较现有SOTA算法的检测性能,本博客将针对在各数据集上表现较优的算法模型进行介绍。(表…...
机器学习 深度学习编程笔记
sigmoid函数 def sigmoid(x):return 1.0 / (1np.exp((-x)))定义最小平方和损失函数 loss torch.nn.MSELoss()线性回归编程 如果不加噪音就成了正常的线性函数了,所以要加噪音。 torch.normal(0, 0.01, y.shape)torch.normal(0, 0.01, y.shape)是一个用于生成服从…...
18.背景轮播
背景轮播 html部分 <div class"container"><div class"slide active" style"background-image: url(./static/20180529205331_yhGyf.jpeg);"></div><div class"slide " style"background-image: url(./s…...
论文代码学习—HiFi-GAN(2)——鉴别器discriminator代码
文章目录 引言正文鉴别器多周期鉴定器多尺度鉴定器问题 总结 引言 这里翻译了HiFi-GAN这篇论文的具体内容,具体链接。这篇文章还是学到了很多东西,从整体上说,学到了生成对抗网络的构建思路,包括生成器和鉴定器。细化到具体实现的…...
Linux Shell 脚本编程学习之【第3章 正则表达式 (第二部分) grep命令】
第3章 正则表达式 (第二部分) 4 grep命令4.1 基本用法4.2 参考命令4.2.1 双引号4.2.2 -c 输出匹配行数4.2.3 -h 或 -l 不显示或只显示文件名4.2.4 -s 不显示错误信息4.2.5 -r 递归显示本级目录及下级目录4.2.6 -w 匹配完整词 -x 匹配完整行4.2.7 -q 退出…...
大语言模型LLM
目录 一、语言模型的发展 语言模型(Language Model,LM)目标是建模自然语言的概率分布,具体目标是构建词序列w1,w2,...,wm的概率分布,即计算给定的词序列作为一个句子出现可能的大小P(w1w2...wm)。但联合概率P的参数量…...
自学网络安全(黑客)的误区
前言 网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。 一、网络安全学习的误区 1.不要…...
@Conditional
Conditional Conditional 是 spring framework 中提供的一个条件注解,,满足条件就注入,不满足就不注入ioc Condtional 需要和 Condition接口 一起用: 返回true注入,返回false不注入,, 里面有一…...
【Linux】网络基础之TCP协议
目录 🌈前言🌸1、基本概念🌺2、TCP协议报文结构🍨2.1、源端口号和目的端口号🍩2.2、4位首部长度🍪2.3、32位序号和确认序号(重点)🍫2.4、16位窗口大小🍬2.5、…...
Java设计模式之装饰器(Decorator)模式
装饰器(Decorator)设计模式允许动态地将新功能添加到对象中,同时又不改变其结构。 什么是装饰器模式 装饰器(Decorator)模式通过将对象进行包装,以扩展其功能,而不需要修改其原始类。装饰器模…...
element ui树组件render-content 树节点的内容区的渲染另一种方式
直接上代码吧,不用h的写法。 <el-tree :data"data" node-key"id" default-expand-all :expand-on-click-node"false" :props"defaultProps":render-content"renderContentTree" node-click"handleNodeClick"&g…...
html a标签换行显示
文章目录 用css display属性不用css,可以用<br>标签换行示例 用css display属性 可以使用CSS的display属性来实现多个a标签每行显示一个。 HTML代码: <div class"link-container"><a href"#">Link 1</a>…...
关于Redis-存Long取Integer类型转换错误的问题
背景 最近遇到了两个Redis相关的问题,趁着清明假期,梳理整理。 1.存入Long类型对象,在代码中使用Long类型接收,结果报类型转换错误。 2.String对象的反序列化问题,直接在Redis服务器上新增一个key-value,…...
设计模式一:简单工厂模式(Simple Factory Pattern)
简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,它提供了一个通用的接口来创建各种不同类型的对象,而无需直接暴露对象的创建逻辑给客户端。 简单工厂的三个重要角色: 工厂类(Factory Class&…...
如何利用plotly和geopandas根据美国邮政编码(Zip-Code)绘制美国地图
对于我自己来说,该需求源自于分析Movielens-1m数据集的用户数据: UserID::Gender::Age::Occupation::Zip-code 1::F::1::10::48067 2::M::56::16::70072 3::M::25::15::55117 4::M::45::7::02460 5::M::25::20::55455 6::F::50::9::55117我希望根据Zip-…...
ceph集群搭建
文章目录 理论知识具体操作搭建ceph本地源yum源及ceph的安装配置NTP(解决时间同步问题)部署ceph自定义crush 理论知识 Ceph是一个分布式存储系统,并且提供了文件、对象、块存储功能。 Ceph集群中重要的守护进程有:Ceph OSD、Cep…...
前端密码加密 —— bcrypt、MD5、SHA-256、盐
🐔 前期回顾悄悄告诉你:前端如何获取本机IP,轻松一步开启网络探秘之旅_彩色之外的博客-CSDN博客前端获取 本机 IP 教程https://blog.csdn.net/m0_57904695/article/details/131855907?spm1001.2014.3001.5501 在前端密码加密方案中ÿ…...
汽车UDS诊断深度学习专栏
1.英文术语 英文术语翻译Diagnostic诊断Onboard Diagnostic 在线诊断 Offboard Diagnostic离线诊断Unified diagnostic service简称 UDS 2.缩写表 缩写解释ISO国际标准化组织UDSUnified diagnostic service,统一的诊断服务ECU电控单元DTC 诊断故障码 ISO14229UD…...
macOS 下安装brew、nvm
1、brew: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" brew -v 查看版本 示例: 安装jdk brew search jdk 查询可用的jdk版本 brew install openjdk11 安装制定版本jdk 更换源࿱…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
