Android OTA升级后输入法异常和应用丢失的分析

简介: Android OTA升级后输入法异常和应用丢失的分析

Android开发过程中,我们可能会遇到各种各样的问题。其中,OTA升级后的问题尤为棘手,因为它们可能与多个因素相关 因为同样的固件只有OTA会存在某些问题 会让你怀疑人生。本文将探讨一个具体的问题:OTA升级后输入法的异常,并提供可能的原因和解决方案。

同一版本固件,线刷不会 只有OTA升级后会存在一些异常BUG。这个问题很早之前就碰到过 当时没有记录习惯,现在又碰到了 所以很快就回忆起原因并解决。

-----0825补充开始-----


  1. 预置应用的消失
  • 使用Android.mk文件并设置LOCAL_MODULE_PATH := $(TARGET_OUT)/preinstall将应用预置到preinstall目录时,发现在OTA升级后,这些应用有概率会丢失。
  • 当设置LOCAL_PRIVILEGED_MODULE := true时(预置到system/priv-app),这些应用在OTA升级后能够保持完好。
  1. 原因与猜测
  • 可能的原因是OTA升级脚本没有正确处理preinstall目录下的应用,导致它们在升级过程中被覆盖或删除。
  • 使用LOCAL_PRIVILEGED_MODULE可能为应用提供了更高的权限或保护级别,使其在OTA升级中不被影响。
  1. latin输入法失效
  • 尽管latin输入法是预置在system/app目录下的,但在OTA升级后它变得不可用。
  • 具体表现为:/data/data/目录下缺少对应的应用目录。
  1. 原因与猜测
  • 这可能是因为OTA升级过程中清除了某些应用数据,导致latin输入法失去了其必要的数据文件(实际查看/data/data/目录下没有com.android.inputmethod.latin)。
  • 另一个可能性是权限问题,导致latin输入法在OTA升级后无法访问其数据目录。

另外输入法和应用不能用的原因我猜测是全志平台系统安装preinstall和/system/app 部分应用存在滞后性 , 然后没有安装完成/完整之后 流程就跑完了? 目前分析就这样后续有时间分析 有进展再补充


-----0825补充结束-----

问题描述

在进行OTA升级后,发现输入法不生效。具体表现为:

  • 使用settings get secure default_input_method命令返回为空。
  • 在Android的设置应用中,输入法选项中看不到预置的输入法。
  • /data/data/目录下可以看到输入法的数据,但尝试手动设置默认输入法也无效。

对比分析

通过进一步的测试和对比,发现:

  • 使用相同的固件进行线刷时,输入法正常。
  • 但通过OTA方式升级时,出现上述的输入法异常。
    这种差异表明,问题可能与OTA升级过程中某些特定的步骤或设置有关。

原因猜测

OTA升级和线刷的一个主要区别是:OTA升级通常不会清除/data分区,而线刷可能会。因此,我们可以猜测问题的原因可能是:

  • OTA升级不会清除/data分区,导致某些设置或配置在OTA升级后不一致或丢失。
  • 默认的输入法配置存储在/data分区,OTA升级后,系统可能无法正确读取或更新这些配置。

解决方法

为了解决这个问题,可以考虑在每次开机时重新加载/data/system/users/0/settings_secure.xml文件。这个文件存储了用户的安全设置,包括默认输入法。通过这种方法,我们可以确保默认输入法的设置在每次开机时都被正确更新。

具体的实现方法是修改SettingsProvider.java文件,使其在每次开机时都重新加载settings_secure.xml文件。

+++ b/android/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -1858,9 +1858,9 @@ public class SettingsProvider extends ContentProvider {
             // Every user has secure settings and if no file we need to migrate.
             final int secureKey = makeKey(SETTINGS_TYPE_SECURE, userId);
             File secureFile = getSettingsFile(secureKey);
-            if (secureFile.exists()) {
+            /*if (secureFile.exists()) {
                 return;
-            }
+            }*/

总结

OTA升级是一个复杂的过程,可能会涉及多个系统组件和设置。当我们遇到OTA升级后的问题时,需要进行详细的分析和对比测试,以确定问题的原因并找到合适的解决方案。本文探讨的输入法异常问题只是其中的一个例子,提醒我们,在进行OTA升级时,需要特别注意/data分区的处理,以确保系统的稳定性和功能完整性,另外提醒 我认为这种改法不是最佳改法,不排除这种改法会导致系统其他设置出现异常(但我没遇到过^^)。

相关文章
|
10月前
|
开发框架 前端开发 Android开发
Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势
本文深入探讨了 Flutter 与原生模块(Android 和 iOS)之间的通信机制,包括方法调用、事件传递等,分析了通信的必要性、主要方式、数据传递、性能优化及错误处理,并通过实际案例展示了其应用效果,展望了未来的发展趋势。这对于实现高效的跨平台移动应用开发具有重要指导意义。
913 4
|
5月前
|
存储 Android开发
如何查看Flutter应用在Android设备上已被撤销的权限?
如何查看Flutter应用在Android设备上已被撤销的权限?
251 64
|
3月前
|
JSON 移动开发 Java
ArkUI-X通过Stage模型开发Android端应用指南(二)
本文介绍了StageApplication的三种初始化方式及Ability与原生Activity之间的交互方法。包括通过继承StageApplication、使用StageApplicationDelegate,以及在Activity中初始化;还详细说明了如何通过Intent传递参数,支持手动构建JSON或使用WantParams工具类,并列举了支持的数据类型和注意事项。
|
3月前
|
开发工具 Android开发 开发者
ArkUI-X通过Stage模型开发Android端应用指南(一)
本文介绍了如何将ArkUI框架扩展至Android平台,开发者可基于OpenHarmony复用应用代码并部署到Android,降低跨端开发成本,并详解了关键类及配置方法。
|
10月前
|
安全 Android开发 数据安全/隐私保护
深入探讨iOS与Android系统安全性对比分析
在移动操作系统领域,iOS和Android无疑是两大巨头。本文从技术角度出发,对这两个系统的架构、安全机制以及用户隐私保护等方面进行了详细的比较分析。通过深入探讨,我们旨在揭示两个系统在安全性方面的差异,并为用户提供一些实用的安全建议。
|
7月前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
385 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
7月前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
154 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
10月前
|
安全 Android开发 数据安全/隐私保护
深入探索Android与iOS系统安全性的对比分析
在当今数字化时代,移动操作系统的安全已成为用户和开发者共同关注的重点。本文旨在通过比较Android与iOS两大主流操作系统在安全性方面的差异,揭示两者在设计理念、权限管理、应用审核机制等方面的不同之处。我们将探讨这些差异如何影响用户的安全体验以及可能带来的风险。
411 21
|
9月前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
234 14
|
9月前
|
Java Linux 数据库
探索安卓开发:打造你的第一款应用
在数字时代的浪潮中,每个人都有机会成为创意的实现者。本文将带你走进安卓开发的奇妙世界,通过浅显易懂的语言和实际代码示例,引导你从零开始构建自己的第一款安卓应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇门,让你的创意和技术一起飞扬。
170 13