当前位置: 首页 > news >正文

升级targetSdkVersion至33(以及迁移至Androidx)

1.设置 android.useAndroidX=true 和 android.enableJetifier=true
2.一键迁移至androidx:Refactor -> Migrate to Androidx
3.手动修改未能自动迁移到androidx的部分:

android.support.v4.view.ViewPager.PageTransformer -> androidx.viewpager.widget.ViewPager.PageTransformer

android.support.annotation.NonNull -> androidx.annotation.NonNull

android.support.annotation.Nullable -> androidx.annotation.Nullable

android.support.v4.content.ContextCompat -> androidx.core.content.ContextCompat

android.support.v7.widget.DividerItemDecoration -> androidx.recyclerview.widget.DividerItemDecoration

android.support.v7.widget.RecyclerView -> androidx.recyclerview.widget.RecyclerView

android.arch.lifecycle.MutableLiveData -> androidx.lifecycle.MutableLiveData

android.arch.lifecycle.ViewModel -> androidx.lifecycle.ViewModel

android.support.v7.widget.LinearLayoutManager -> androidx.recyclerview.widget.LinearLayoutManager

android.support.constraint.ConstraintLayout -> androidx.constraintlayout.widget.ConstraintLayout

android.support.constraint.Group -> androidx.constraintlayout.widget.Group

android.support.v4.widget.NestedScrollView -> androidx.core.widget.NestedScrollView

android.support.v4.widget.SwipeRefreshLayout -> androidx.swiperefreshlayout.widget.SwipeRefreshLayout

android.support.constraint.Guideline -> androidx.constraintlayout.widget.Guideline

android.support.design.widget.CoordinatorLayout -> androidx.coordinatorlayout.widget.CoordinatorLayout

android.support.design.widget.AppBarLayout -> com.google.android.material.appbar.AppBarLayout

android.support.design.widget.CollapsingToolbarLayout -> com.google.android.material.appbar.CollapsingToolbarLayout

android.support.v7.widget.Toolbar -> androidx.appcompat.widget.Toolbar

android.support.v4.view.ViewPager -> androidx.viewpager.widget.ViewPager

android.support.multidex.MultiDexApplication -> androidx.multidex.MultiDexApplication

android.support.v4.view.PagerAdapter -> androidx.viewpager.widget.PagerAdapter

android.support.v7.util.DiffUtil -> androidx.recyclerview.widget.DiffUtil

android.support.v4.app.Fragment -> androidx.fragment.app.Fragment

android.support.v4.app.FragmentActivity -> androidx.fragment.app.FragmentActivity
android.support.annotation.IntDef -> androidx.annotation.IntDef

android.support.annotation.RequiresApi -> androidx.annotation.RequiresApi

android.support.v4.app.ActivityCompat -> androidx.core.app.ActivityCompat

android.support.v4.widget.Space -> androidx.legacy.widget.Space(为使用space,还需要implementation 'androidx.legacy:legacy-support-v4:1.0.0)

android.support.annotation.ColorRes -> androidx.annotation.ColorRes

android.support.annotation.StringRes -> androidx.annotation.StringRes

android.support.v7.widget.GridLayoutManager -> androidx.recyclerview.widget.GridLayoutManager

android.support.annotation.LayoutRes -> androidx.annotation.LayoutRes

android.support.v4.util.ArrayMap -> androidx.collection.ArrayMap

android.support.design.internal.BottomNavigationMenuView -> com.google.android.material.bottomnavigation.BottomNavigationMenuView

android.support.design.widget.BottomNavigationView -> com.google.android.material.bottomnavigation.BottomNavigationView

android.support.v7.widget.SimpleItemAnimator -> androidx.recyclerview.widget.SimpleItemAnimator

android.support.v8.renderscript. -> androidx.renderscript.

android.support.design.widget.FloatingActionButton -> com.google.android.material.floatingactionbutton.FloatingActionButton

android.support.v7.widget.PagerSnapHelper -> androidx.recyclerview.widget.PagerSnapHelper


4.更新 ButterKnife 和 ShadowLayout 库到androidx兼容版本

implementation 'com.jakewharton:butterknife:8.8.1' -> implementation 'com.jakewharton:butterknife:10.2.1'

annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' -> annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.1' 

5.升级gradle

com.android.tools.build:gradle:3.4.1 -> com.android.tools.build:gradle:7.1.2

distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip -> distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip

6.根目录的build.gradle文件中的依赖路径全部改为https的

7.注销build.gradle文件中的自定义路径(gradle tool插件7.x版本好像不支持自定义路径)

variant.outputs.all {
            // 自定义输出路径
            if (variant.buildType.name == "release") {
                variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + File.separator + "app/build/outputs/apk/release")
            } else {
                variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + File.separator + "app/build/outputs/apk/debug")
            }
        }

8.适配webView

mWebSettings.setAppCachePath(appCachePath);

webView.getSettings().setAppCacheEnabled(false); -> webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

mWebSettings.setAppCacheEnabled(true) -> mWebSettings.setCacheMode(WebSettings.LOAD_DEFAULT);

9.适配截屏服务:

在manifest.xml文件中添加权限和service

<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.MEDIA_PROJECTION" />

<service

            android:name=".xxxService"
            android:foregroundServiceType="mediaProjection"
            tools:node="replace"
            android:exported="false"/>

10.其他改动待补充


 

相关文章:

升级targetSdkVersion至33(以及迁移至Androidx)

1.设置 android.useAndroidXtrue 和 android.enableJetifiertrue 2.一键迁移至androidx&#xff1a;Refactor -> Migrate to Androidx 3.手动修改未能自动迁移到androidx的部分&#xff1a; android.support.v4.view.ViewPager.PageTransformer -> androidx.viewpager.wi…...

python3.11版本pip install ddddocr调用时报错got an unexpected keyword argument ‘det‘ 解决

一、如图出现如下问题 ddddocr.__init__() got an unexpected keyword argument det出现问题原因&#xff1a;python3.11默认安装版本就旧版的ddddocr1.0的&#xff0c;所以导致如下报错 二、解决方案一&#xff08;推荐&#xff09; python3.11的环境直接安装这个即可&…...

代理IP与Socks5代理:跨界电商之安全防护与智能数据引擎

第一部分&#xff1a;跨界电商的兴起与网络安全挑战 1.1 跨界电商的崭露头角 跨界电商已经成为全球贸易的新引擎&#xff0c;企业纷纷踏上了拓展国际市场的征程。 1.2 网络安全的不容忽视 跨界电商的增长也伴随着网络安全威胁的增加。黑客攻击、数据泄露和欺诈行为等风险呈…...

如何评估一个HR是否专业?看这些标准

HR在遇到优秀的人才时&#xff0c;以往的招聘中&#xff0c;我们总以惯性思维寻找吸引人才的突破口&#xff0c;诸如体现薪酬优厚、突出平台优势甚至提高面试话术等&#xff0c;却忽略了面试官本人的人格魅力&#xff0c;本身就是公司招聘的形象代言&#xff0c;因为优秀的面试…...

WordPress主题开发( 八)之—— 模板循环详细用法

WordPress 主题开发教程手册 — 模板循环 WordPress 主题开发中&#xff0c;模板循环是一个非常关键的概念&#xff0c;它负责默认机制来输出文章内容。模板循环会遍历当前页面获取的所有文章&#xff0c;然后使用主题中的模板标签将它们格式化并输出。 模板循环的应用 Word…...

QT : 完成绘制时钟

1.头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> #include <QTimer> #include <QTime> #include <QPaintEvent> #include <QDebug> #include <QBrush>QT_BEGIN_NAMESPACE namespace Ui { class…...

香港云服务器和日本云服务器哪个好?(详细对比)

​  购置海外服务器时&#xff0c;您是在乎网络速度?价格?稳定性?当这几个因素同时存在&#xff0c;我们该如何选择?本篇针对海外热门的两个地区&#xff0c;中国香港和日本&#xff0c;这两种云服务器谁优谁劣?各有什么亮点?逐一进行对比分析。 一、速度上来看 中国香…...

Cross Attention和 Self- Attention 的区别?

Cross Attention和Self-Attention都是深度学习中常用的注意力机制&#xff0c;用于处理序列数据&#xff0c;其中Self-Attention用于计算输入序列中每个元素之间的关系&#xff0c;Cross Attention则是计算两个不同序列中的元素之间的关系。它们的主要区别在于计算注意力分数时…...

《从零开始的Java世界》02面向对象(基础)

《从零开始的Java世界》系列主要讲解Javase部分&#xff0c;从最简单的程序设计到面向对象编程&#xff0c;再到异常处理、常用API的使用&#xff0c;最后到注解、反射&#xff0c;涵盖Java基础所需的所有知识点。学习者应该从学会如何使用&#xff0c;到知道其实现原理全方位式…...

pve关闭windows虚拟机慢

背景&#xff1a; 在web界面关闭windows虚拟机一直转圈&#xff0c;使用命令行关闭报错 qm stop 155 trying to acquire lock... cant lock file /var/lock/qemu-server/lock-155.conf - got timeout解决 删除lock&#xff0c;然后用命令行重新关闭 rm /var/lock/qemu-serve…...

【Django】 rest_framework接口开发流程及接口功能组成

rest_framework接口开发流程及接口功能组成 使用restframework框架开发接口&#xff0c;方式应该有6、7种&#xff0c;每个人的习惯不同&#xff0c;用的方法也不一样&#xff0c;再次不再一一详述。 我比较常用&#xff1a;ModelSerializerGenericAPIView 原因是用视图函数装饰…...

Kafka Log存储解析以及索引机制

1.概述 在Kafka架构&#xff0c;不管是生产者Producer还是消费者Consumer面向的都是Topic。Topic是逻辑上的概念&#xff0c;而Partition是物理上的概念。每个Partition逻辑上对应一个log文件&#xff0c;该log文件存储是Producer生产的数据。Producer生产的数据被不断追加到该…...

广告电商模式:探索新商业模式,实现三方共赢

随着互联网技术的发展&#xff0c;电商行业正在不断探索新的商业模式。其中&#xff0c;广告电商模式是一种创新的方式&#xff0c;它成功地将广告和电商相结合&#xff0c;实现了三方共赢的局面。一、广告电商模式的定义广告电商模式&#xff0c;顾名思义&#xff0c;是一种将…...

动态线程池框架DynamicTp v1.1.4大版本发布,新增若干实用特性

DynamicTp 简介 DynamicTp 是一个基于配置中心实现的轻量级动态线程池监控管理工具&#xff0c;主要功能可以总结为动态调参、通知报警、运行监控、三方包线程池管理等几大类。 DynamicTp 特性 代码零侵入&#xff1a;我们改变了线程池以往的使用姿势&#xff0c;所有配置均放…...

无线通信——Mesh自组网的多跳性

Mesh的多跳性 Mesh网络具备多跳性。什么是多跳性呢&#xff1f;上面说过&#xff0c;每一个具备Mesh网络的设备都是独立的节点。因此&#xff0c;当我发出一条数据时&#xff0c;这些数据会通过跳跃到达不同的网络节点&#xff0c;数据从一个节点跳到另一个节点&#xff0c;直到…...

QA 云计算实验问题汇总

Q Win11中VMware虚拟网卡有感叹号 2023-9-27一位同学的win11的两个VMware17的虚拟网卡都有感叹号 A 清除注册表 步骤1 关闭VMWare虚拟化软件 步骤2 使用CCleaner pro 清理注册表 步骤3 重启系统 步骤4 VMware虚拟网卡上的感叹号消失。 Q Win11上的VisualBox的网卡消失了…...

VEX —— Functions|Groups

目录 expandpointgroup —— 返回点组内点号 expandprimgroup —— 返回面组内面号 expandvertexgroup —— 返回顶点组内顶点号 inpointgroup —— 判断指定点是否在点组内 inprimgroup —— 判断指定面是否在面组内 invertexgroup —— 判断指定顶点是否在顶点组内 np…...

JavaSE18——接口

接口(interface) 1 概述 在Java中&#xff0c;接口是一种抽象数据类型&#xff0c;它定义了一组方法&#xff08;没有方法体&#xff09;&#xff0c;但没有实现这些方法的具体代码。接口可以看作是一种合约&#xff0c;它规定了类应该具有的行为。类可以实现一个或多个接口&…...

杭州亚运会开幕式惊现数字人火炬手,动捕设备迸发动画制作新动能

在第十九届亚运会开幕式上&#xff0c;首次出现了“数字人”点火形式&#xff0c;打造了亚运史上首个数字点火仪式&#xff0c;这种点火方式是一种颠覆性创作的同时&#xff0c;这也是裸眼3D技术、现实增强和AI人工智能技术的完美结合。 此次数字火炬手的背后是采用了动捕设备&…...

ptmalloc源码分析 - malloc/free函数的实战篇(12)

目录 一、chunk的大小实验 二、获取使用中的chunk信息的实验 三、小内存块尝试获取fd信息的实验 四、常用malloc/free函数使用注意事项 看了前面11章节的内容&#xff0c;我们也基本了解了ptmalloc的内存管理逻辑。此处也可以通过一些手段&#xff0c;获取到chunk的信息&am…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别

UnsatisfiedLinkError 在对接硬件设备中&#xff0c;我们会遇到使用 java 调用 dll文件 的情况&#xff0c;此时大概率出现UnsatisfiedLinkError链接错误&#xff0c;原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用&#xff0c;结果 dll 未实现 JNI 协…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving

地址&#xff1a;LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂&#xff0c;正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...

raid存储技术

1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划&#xff0c;涵盖存储系统的布局、数据存储策略等&#xff0c;它明确数据如何存储、管理与访问&#xff0c;为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...