Android 系统下:普通应用无缝安装,Launcher 应用安装遭遇罕见障碍解析

embedded/2024/9/23 7:01:16/

目录

一、场景

1.1 错误分析

1.2 解决方法尝试

1.2.1 检查应用的安装位置

1.2.2 使用ADB安装

1.2.3 检查APK的签名

1.2.4 检查可用的内部存储空间

1.2.5 将应用程序安装到设备的内部存储空间

1.2.6 重置设备(谨慎使用)

1.2.7 获取Root权限(谨慎使用)

1.3 结束(解决方案)

往期推荐


一、场景

        需要给一台 Android 10 设备(智能一体机,类似下图) 安装一个主屏幕应用

        

        普通应用:这些应用通常执行特定的功能或任务,如社交媒体、游戏、办公软件等。它们专注于为用户提供某一方面的服务或体验,并不直接参与系统级别的用户界面管理。

        主屏幕应用(Launcher):作为Android设备的用户界面管理器,Launcher负责管理和呈现用户界面,包括桌面、应用程序抽屉和部件。它允许用户自定义手机的主屏幕、图标、小部件布局以及一些基本功能,如滑动效果和屏幕转换。每个Android设备通常都会预装一个默认的Launcher,但用户可以从应用商店下载并安装第三方Launcher来获得更多的个性化选项和功能。

        安装普通应用没有问题,如果安装主屏幕应用报错:

Installation did not succeed.
The application could not be installed: INSTALL_FAILED_INVALID_INSTALL_LOCATIONList of apks:
[0] 'xxxxxx.apk'
Installation failed due to: 'Failed to commit install session 1106047452 with command package install-commit 1106047452. Error: INSTALL_FAILED_INVALID_INSTALL_LOCATION: Cannot install updates to system or vendor apps on sdcard'
Retry
Failed to launch an application on all devices

1.1 错误分析

        通常发生在尝试更新或安装一个被系统或设备制造商标记为系统或供应商级别的应用程序时,而你试图将其安装到SD卡上。这是一种安全措施,目的是防止对系统或供应商应用程序进行未经授权的更改。
        在Android设备上,不是所有的应用都可以被安装到外部存储(如SD卡),尤其是系统应用或具有特殊权限的应用。

1.2 解决方法尝试

1.2.1 检查应用的安装位置

        确保你没有尝试将应用安装到SD卡。在Android设备上,通常可以在“设置”->“应用”->选择应用->“存储”中查看和修改应用的安装位置(如果允许)。但是,对于系统或供应商应用,这个选项可能不可用。

        注:我这个软件安装没问题,桌面应用被限制了,此方法对我无效。

1.2.2 使用ADB安装

        使用ADB(Android Debug Bridge)来安装应用,尝试使用 -r 参数(允许替换已存在的应用)但不指定安装位置(即不使用 -s 参数)。通常,使用如下命令安装应用:

        adb install -r xxxx.apk

        注:如果没有root权限,这个命令只能用于安装或更新非系统应用。跟1.2.1 类似,此方法对我无效。

1.2.3 检查APK的签名

        确保你正在尝试安装的APK的签名与已安装的系统或供应商应用的签名相匹配。如果签名不匹配,你将无法更新该应用(如果是可卸载),如果被内置为系统应用,即时卸载也无法安装。遇到过类似的问题,通过重装系统解决了。

1.2.4 检查可用的内部存储空间

        确保手机的内部存储空间足够容纳更新。删除不需要的文件或应用程序以释放空间。

1.2.5 将应用程序安装到设备的内部存储空间

        将应用程序安装到设备的内部存储空间:在AndroidManifest.xml文件中,确保您的应用程序的android:installLocation属性设置为internalOnly。这将强制应用程序仅安装在设备的内部存储中,而不是SD卡上。

        注:跟1.2.1 类似,此方法对我无效。

1.2.6 重置设备(谨慎使用)

        如果以上方法都不可行,并且问题持续存在,可能需要考虑重置设备到出厂设置。请注意,这将清除所有数据和设置,因此请确保先备份重要数据。

1.2.7 获取Root权限(谨慎使用)

        如果你有Root权限,你可以尝试将应用直接推送到系统分区或使用具有root权限的APK安装器。但请注意,这样做可能会带来安全风险,并可能影响设备的稳定性。

1.3 结束(解决方案)

        该问题是设备在操作系统层面上禁止非指定包名的桌面应用安装。我将系统自带桌面移除,也无法安装的自己的桌面应用,重新安装系统自带桌面成功。

        解决方案1:设备厂商允许安装自己的桌面(厂商收费略高)。
        解决方案2:自己刷机,重新烧录一下操作系统(当前采用方式)
        解决方案3:获取Root权限,自己玩可以,商用肯定不合适。

往期推荐

Android The emulator process for AVD XXX has terminated.-CSDN博客文章浏览阅读2.1w次,点赞8次,收藏35次。1、释放PC空间(可能磁盘空间不足)2、将CPU/ABI设置从“ armeabi-v7a ”更改为“ x86_64 ”3、清除模拟器的数据解决了这个问题,然后重新启动了模拟器4、AVD卸载重装,并重启AS5、版本过高,降级模拟器版本。6、检查是否含有中文。_the emulator process for avdhttps://shuaici.blog.csdn.net/article/details/120164749Android Studio无法连接模拟器(真机)-CSDN博客文章浏览阅读4.9k次,点赞3次,收藏9次。本文主要介绍了在Android开发过程中遇到的adb连接问题及其解决方案,包括找不到模拟器或真机、adb命令报错如'command not found'、'Operation timed out'、'device not found'和'protocol family unavailable'等错误的处理方法,提供了详细的步骤和命令示例。https://shuaici.blog.csdn.net/article/details/116780929


http://www.ppmy.cn/embedded/114378.html

相关文章

链动321模式开发系统解析源码

链动321模式是一种结合了区块链技术、动态激励机制与“321”运营模式的新型电商架构。该模式通过激励用户分享和推广,实现用户、企业和平台的共赢,具有独特的商业逻辑和高效的运营机制。以下是对链动321模式的详细解析: 系统特点 裂变迅速&am…

HarmonyOS NEXT 封装实现好用的网络模块(基于最新5.0的API12)

在 HarmonyOS-NEXT 开发中,网络请求是应用开发中不可或缺的一部分。为了提高开发效率和代码复用性,我们可以封装一个好用的网络模块组件。本文将介绍如何在 HarmonyOS-NEXT 中封装一个功能强大且易于使用的网络模块组件。 封装目的 网络模块使用的频率最…

变量的作用域和生命周期

大家好我是清墨,欢迎收看本期文章。 1. 数据存储的 3 要素 计算机程序在存储数据时必须跟踪 3 个基本属性: 信息存储在何处,在什么地方定义变量,决定了信息存储在何处存储的值是多少,值是多少是通过赋值语句&#xff…

Java 基础知识九(网络编程)

UDP DatagramSocket:通讯的数据管道 -send 和receive方法 -(可选,多网卡)绑定一个IP和Port DatagramPacket -集装箱:封装数据 -地址标签:目的地IPPort package org.example.net;import java.net.DatagramPacket; import java.net.DatagramSocket; import java.n…

Matlab R2024B软件安装教程

一、新版本特点 MATLAB R2024B版本带来了众多新特性和改进,旨在提升用户的内容创作体验和工程效率。以下是该版本的一些主要特点: 1. 性能提升和优化:R2024B版本在性能上进行了显著优化,无论是在提问、回答问题、发布新技巧还是…

mybatisplus中id生成策略

使用Tableld(value,type) 1.typeIdType.AUTO自增主键 2.typeIdType.ASSIGN,雪花算法生成 mybatisplus id生成策略全局配置 配置表前缀以及id生成策略 mybatis-plus:global-config:db-config:id-type: autotable-prefix: :t_

.Net Core 生成管理员权限的应用程序

创建一个ASP.NET Core Web API项目 给解决方案设置一个名称 选择一个目标框架,这里选择的是 .NET 8.0框架 在Porperties文件夹中添加一个app.manifest文件 设置app.manifest文件属性,生成操作设置为嵌入的资源 双击解决方案名称,编辑WebAppli…

微服务_入门1

文章目录 一、 认识微服务二、 微服务演变2.1、 单体架构2.2、 分布式架构2.3、 微服务2.4、 微服务方案对比 三、 注册中心3.1、 Eureka3.2、 Nacos3.2.1、服务分级存储模型3.2.2、权重配置3.2.3、环境隔离 一、 认识微服务 二、 微服务演变 随着互联网行业的发展,…