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

安卓14无法安装应用解决历程

客户手机基本情况:

安卓14,对应的 targetSdkVersion 34

前天遇到了安卓14适配问题,客户发来的截图是这样的

描述:无法安装我们公司的B应用。

型号:三星+google美版

解决步骤:

1、寻找其他安卓14手机测试。

同事安卓14的手机,可以安装上,只是有提示

所以,初步判定是谷歌系统问题。

2、target修改位34,请客户安装。

依然安装不上,同事的手机依然有可以安装,有提示。

查询到另外一种安装方式,但是,对于客户,肯定不合适,

adb install --bypass-low-target-sdk-block xxx.apk

3、手机设置方向尝试解决。

(1)清除数据和缓存

(2)兼容的设置

都不行

(3)接下来继续做程序方向的改造

4、尝试compile修改和一个相关库项目

我查询compile 的版本和target的关系,意思是最好一致,于是我修改为一致的,项目的库项目有2个,我修改了1个功能相关的库项目的target和compile版本

再次尝试,用户依然无法安装。

5、请教

给了我2个提示,

A、一个是32位和64的问题,我得去分析。

B、安卓14,虽然有得可以安装,但是,调试是不行的,所以,找真机测试,可以看到更详细的报错信息

6、去掉32位的限制,安卓14真机调试。

用户可以安装了。他的三星手机无法使用32位的应用,所以,无法安装;我同事的手机是可以支持的。

7、可以安装,但是【输完验证码 闪退】-okhttp版本需要适配安卓14,

于是继续真机调试

是okhttp3的版本需要适配target34,由3.11.0修改为4.8.1

//    implementation 'com.squareup.okhttp3:okhttp:3.11.0'implementation 'com.squareup.okhttp3:okhttp:4.8.1'

8、同事手机可以运行,客户手机依然奔溃。-尝试卸载旧的再安装,也不行。

怀疑缓存问题,让客户卸载后,再次安装也不行。

9、另外一个库项目里,引入有一个小的报错,com.android.support 需要变成androidX

com.android.support 报错,按理来说需要修改为androidX

android stadio 自带的攻击可以支持,但是,要求tools版本有要求

这个版本,在项目根目录的的build.gradle里可以查看

很明显,我的不符合要求

10、升级com.android.tools.build:gradle 为3.20,对应gradle-wrapper.也需要升级

但是,提醒,gradle-wrapper.properties 需要变为4.6,

于是这个配置也升级,但是自动变为

gradle-4.6-bin

无法更新下来

手动下载也打不开网络

于是,我又手动修改为gradle-4.6-all,发现可以手动下载

于是,工程里修改升级

distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
 

更新后,提示kotlin_version 版本太低,继续修改

ext.kotlin_version = '1.1.51'

修改为1.2.51

11、升级完成,但是,无法启动运行

做了以下尝试

1、libpulltorefresh工程的target我也改为34,上午没有改动;
2、libpulltorefresh 工程的 com.android.support:appcompat 引入,由compile修改为implementation

 

12、还是无法启动,于是计划回退到步骤8。

把tools的版本退重新回退到3.0.1,一直构建不了。(20分钟以上)

13、备份程序也无法启动。(5分钟)

因为客户来了,只能告知客户一时解决不了,让他先附近转转,而为有点焦虑。

14、强制退出android stadio

15、再次启动android stadio,打开项目。

我去上了一下厕所,再次回来,项目竟然初始化好了。可以运行了

这里说明,心态要好,耐心等待

结果:

客户的手机,竟然可以安装了。
 

总结:

主要是步骤8的那个版本起作用。

步骤11无法判断是否起了作用

9,10步骤最终回退了。

后续需要完善的内容:

1、欢迎页面把模拟器部分注释掉了;正式上线需要放开。
2、Minifest里面,启动类加了export=true;上线前应该修改为false;否则安全过不去;
3、存储读取变更,设备报修读取相册申请权限部分修改;改为原生代码;
4、工单附件下载在安卓14不适配,需要修改

相关文章:

安卓14无法安装应用解决历程

客户手机基本情况: 安卓14,对应的 targetSdkVersion 34 前天遇到了安卓14适配问题,客户发来的截图是这样的 描述:无法安装我们公司的B应用。 型号:三星google美版 解决步骤: 1、寻找其他安卓14手机测试…...

【Linux】传输层协议UDP

目录 再谈端口号 端口号范围划分 UDP协议 UDP协议端格式 UDP的特点 UDP的缓冲区 UDP注意事项 进一步深刻理解 再谈端口号 在上图中,有两个客户端A和B,客户端A打开了两个浏览器,这两个客户端都访问同一个服务器,都访问服务…...

玩机搞机基本常识-------列举安卓机型一些不常用的adb联机命令

前面分享过很多 常用的adb命令,今天分享一些不经常使用的adb指令。以作备用 1---查看当前手机所有app包名 adb shell pm list package 2--查看当前机型所有apk包安装位置 adb shell pm list package -f 3--- 清除指定应用程序数据【例如清除浏览器应用的数据】 …...

unity学习14:unity里的C#脚本的几个基本生命周期方法, 脚本次序order等

目录 1 初始的C# 脚本 1.1 初始的C# 脚本 1.2 创建时2个默认的方法 2 常用的几个生命周期方法 2.1 脚本的生命周期 2.1.1 其中FixedUpdate 方法 的时间间隔,是在这设置的 2.2 c#的基本语法别搞混 2.2.1 基本的语法 2.2.2 内置的方法名,要求更严…...

pytorch 比较两个张量的是否相等的函数介绍

在 PyTorch 中,可以使用多种函数来比较两个张量是否相等,具体选择取决于对比较精度的需求以及可能的数值误差。以下是常用的比较方法: 1. 完全相等的比较 (1) torch.eq 逐元素比较两个张量是否相等,返回布尔张量。 import torc…...

MySQL Windows 11 的 MySQL 配置文件 (my.ini) 路径查找指南

✅ Windows 11 的 MySQL 配置文件 (my.ini) 路径查找指南 在 Windows 11 上,MySQL 的 ini 配置文件(通常是 my.ini 或 my.cnf)的位置取决于 MySQL 的安装方式。下面是一些常见的路径和方法来找到这个配置文件。 🔍 方法 1&#…...

06-RabbitMQ基础

目录 1.初识MQ 1.1.同步调用 1.2.异步调用 1.3.技术选型 2.RabbitMQ 2.1.安装 2.2.收发消息 2.2.1.交换机 2.2.2.队列 2.2.3.绑定关系 2.2.4.发送消息 2.3.数据隔离 2.3.1.用户管理 2.3.2.virtual host 3.SpringAMQP 3.1.导入Demo工程 3.2.快速入门 3.2.1.消…...

关于markdown实现页面跳转(调查测试:csdn(博客编写效果、发布效果)、typroa中md转pdf的使用情况)

一-方法介绍 [点击跳转到标题0](#1) <a href"#2">正文2</a>### <span id"2">标题0</span>二、跳转测试区 点击跳转到标题0 正文2 三、测试结果 场景MDspan-可标题写博客时候&#xff0c;右侧显示区效果可以发布博客的效果可以…...

el-dialog 组件 在<style lang=“scss“ scoped>标签

vue3 中使用element-plus的el-dialog 组件 <style> .el-dialog.plan-text-pdf .el-dialog__body {height: 1485px; // 需要在 style 标签写。 建议新增个类名 .plan-text-pdf 防止重复样式 } </style><style lang"scss" scoped> :deep() .el-dial…...

《深度学习梯度消失问题:原因与解决之道》

在深度学习的训练过程中&#xff0c;梯度消失是一个常见且棘手的问题&#xff0c;它会严重影响模型的训练效果和性能。以下是对该问题的原因分析与解决办法。 梯度消失问题的原因 首先是激活函数选择不当。像Sigmoid和Tanh这类传统激活函数&#xff0c;在输入值较大或较小时&…...

中高级运维工程师运维面试题(十一)之 Docker

目录 往期回顾前言基础知识1. 什么是 Docker&#xff1f;2. Docker 的核心组件有哪些&#xff1f;3. Docker 镜像和容器有什么区别&#xff1f;4. 什么是 Dockerfile&#xff1f; 高级知识5. 什么是多阶段构建&#xff1f;如何使用&#xff1f;6. Docker 网络有哪些模式&#x…...

Gitee图形界面上传(详细步骤)

目录 1.软件安装 2.安装顺序 3.创建仓库 4.克隆远程仓库到本地电脑 提交代码的三板斧 1.软件安装 Git - Downloads (git-scm.com) Download – TortoiseGit – Windows Shell Interface to Git 2.安装顺序 1. 首先安装git-2.33.1-64-bit.exe&#xff0c;顺序不能搞错2. …...

WebSocket 实现指南

WebSocket 实现指南 目录 1. 依赖安装 1.1 安装必要的包 # 安装 gorilla/websocket go get github.com/gorilla/websocket# 安装 gin 框架 go get github.com/gin-gonic/gin1.2 更新 go.mod require (github.com/gin-gonic/gin v1.9.1github.com/gorilla/websocket v1.5.3…...

TRELLIS - 生成 3D 作品的开源模型

TRELLIS 是一个大型 3D 资产生成模型。它接收文本或图像提示&#xff0c;并生成各种格式的高质量 3D 资产&#xff0c;例如 Radiance Fields、3D Gaussians 和网格。TRELLIS 的基石是统一的结构化 LATent &#xff08;SLAT&#xff09; 表示&#xff0c;它允许解码为不同的输出…...

uni-app图文列表到详情页面切换

需求&#xff1a;参考若依框架后&#xff0c;想实现首页浏览文章列表&#xff0c;没有合适的样式参考&#xff0c;所以需要有效果做到“图文列表到详情页面切换”&#xff0c;查阅了一下案例 发现有相应的案例&#xff0c;在导航栏“模板”中找到了 DCloud 插件市场 PC电脑端访…...

ros2-3.4话题通信最佳实践

3.4.1 工程架构设计 需求背景&#xff1a; 第一&#xff0c;通过这个小工具可以看到系统的实时状态信息包括记录信息的时间、主机名称、CPU使用率、内存使用率、内存总大小、剩余内存、网络接收数据量和网络发送数据量; 第二&#xff0c;要有一个简单的界面&#xff0c;可以将…...

Vmware安装centos

用来记录自己安装的过程 一、创建虚拟机安装centos镜像 点击完成后&#xff0c;等待一会会进入centos的系统初始化界面 二、centos初始化配置 三、配置网络 1、虚拟网络编辑器&#xff0c;开启VMnet1、VMnet8的DHCP vmware左上角工具栏&#xff0c;点击【编辑】->【虚拟网…...

51单片机——按键实验

由于机械点的弹性作用&#xff0c;按键开关在闭合时不会马上稳定的接通&#xff0c;在断开时也不会一下子断开&#xff0c;因而在闭合和断开的瞬间均伴随着一连串的抖动。抖动时间的长短由按键的机械特性决定的&#xff0c;一般为 5ms 到 10ms&#xff0c;为了确保 CPU 对按键的…...

QT c++ 自定义按钮类 加载图片 美化按钮

如果你有需要利用图片美化按钮的情况&#xff0c;本文能帮助你。 鼠标左键按下按钮和松开&#xff0c;按钮显示不同的图片。 1.按钮类 //因为此类比较简单&#xff0c;1个头文件搞定&#xff0c;没有cpp文件 #ifndef CUSTOMBUTTON_H #define CUSTOMBUTTON_H #include <Q…...

Django:构建高效Web应用的强大框架

在当今快速发展的Web开发领域&#xff0c;选择一个合适的框架对于项目的成功至关重要。Django&#xff0c;作为Python编程语言中最受欢迎的Web框架之一&#xff0c;凭借其强大的功能、高度的可扩展性和简洁的语法&#xff0c;成为了众多开发者心中的首选。本文将深入探讨Django…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

Java多线程实现之Callable接口深度解析

Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Java数组Arrays操作全攻略

Arrays类的概述 Java中的Arrays类位于java.util包中&#xff0c;提供了一系列静态方法用于操作数组&#xff08;如排序、搜索、填充、比较等&#xff09;。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序&#xff08;sort&#xff09; 对数组进行升序…...

__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ is not explicitly defined.

这个警告表明您在使用Vue的esm-bundler构建版本时&#xff0c;未明确定义编译时特性标志。以下是详细解释和解决方案&#xff1a; ‌问题原因‌&#xff1a; 该标志是Vue 3.4引入的编译时特性标志&#xff0c;用于控制生产环境下SSR水合不匹配错误的详细报告1使用esm-bundler…...

docker容器互联

1.docker可以通过网路访问 2.docker允许映射容器内应用的服务端口到本地宿主主机 3.互联机制实现多个容器间通过容器名来快速访问 一 、端口映射实现容器访问 1.从外部访问容器应用 我们先把之前的删掉吧&#xff08;如果不删的话&#xff0c;容器就提不起来&#xff0c;因…...

关于疲劳分析的各种方法

疲劳寿命预测方法很多。按疲劳裂纹形成寿命预测的基本假定和控制参数&#xff0c;可分为名义应力法、局部应力一应变法、能量法、场强法等。 1名义应力法 名义应力法是以结构的名义应力为试验和寿命估算的基础&#xff0c;采用雨流法取出一个个相互独立、互不相关的应力循环&…...

【自然语言处理】大模型时代的数据标注(主动学习)

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构D 实验设计E 个人总结 A 论文出处 论文题目&#xff1a;FreeAL: Towards Human-Free Active Learning in the Era of Large Language Models发表情况&#xff1a;2023-EMNLP作者单位&#xff1a;浙江大…...

OGG-01635 OGG-15149 centos服务器远程抽取AIX oracle11.2.0.4版本

背景描述 有一套ogg远程抽取的环境&#xff0c;源端是AIX7.1环境的oracle 11.2.0.4版本的数据库&#xff0c;中间是OGG抽取服务器&#xff0c;目标端是centos 7.9环境的oracle 19c。 采用集成模式远程抽取源端数据正常&#xff0c;但是经典模式远程抽取源数据的时候抽取进程启…...