在Android开发过程中,我们可能会遇到各种各样的问题。其中,OTA升级后的问题尤为棘手,因为它们可能与多个因素相关 因为同样的固件只有OTA会存在某些问题 会让你怀疑人生。本文将探讨一个具体的问题:OTA升级后输入法的异常,并提供可能的原因和解决方案。
同一版本固件,线刷不会 只有OTA升级后会存在一些异常BUG。这个问题很早之前就碰到过 当时没有记录习惯,现在又碰到了 所以很快就回忆起原因并解决。
-----0825补充开始-----
预置应用的消失:
Android.mk
文件并设置LOCAL_MODULE_PATH := $(TARGET_OUT)/preinstall
将应用预置到preinstall
目录时,发现在OTA升级后,这些应用有概率会丢失。LOCAL_PRIVILEGED_MODULE := true
时(预置到system/priv-app),这些应用在OTA升级后能够保持完好。原因与猜测:
preinstall
目录下的应用,导致它们在升级过程中被覆盖或删除。LOCAL_PRIVILEGED_MODULE
可能为应用提供了更高的权限或保护级别,使其在OTA升级中不被影响。latin输入法失效:
system/app
目录下的,但在OTA升级后它变得不可用。/data/data/
目录下缺少对应的应用目录。原因与猜测:
另外输入法和应用不能用的原因我猜测是全志平台系统安装preinstall和/system/app 部分应用存在滞后性 , 然后没有安装完成/完整之后 流程就跑完了? 目前分析就这样后续有时间分析 有进展再补充
-----0825补充结束-----
在进行OTA升级后,发现输入法不生效。具体表现为:
settings get secure default_input_method
命令返回为空。/data/data/
目录下可以看到输入法的数据,但尝试手动设置默认输入法也无效。通过进一步的测试和对比,发现:
OTA升级和线刷的一个主要区别是:OTA升级通常不会清除/data
分区,而线刷可能会。因此,我们可以猜测问题的原因可能是:
/data
分区,导致某些设置或配置在OTA升级后不一致或丢失。/data
分区,OTA升级后,系统可能无法正确读取或更新这些配置。为了解决这个问题,可以考虑在每次开机时重新加载/data/system/users/0/l
文件。这个文件存储了用户的安全设置,包括默认输入法。通过这种方法,我们可以确保默认输入法的设置在每次开机时都被正确更新。
具体的实现方法是修改SettingsProvider.java
文件,使其在每次开机时都重新加载l
文件。
+++ 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 (ists()) {
+ /*if (ists()) {return;
- }
+ }*/
OTA升级是一个复杂的过程,可能会涉及多个系统组件和设置。当我们遇到OTA升级后的问题时,需要进行详细的分析和对比测试,以确定问题的原因并找到合适的解决方案。本文探讨的输入法异常问题只是其中的一个例子,提醒我们,在进行OTA升级时,需要特别注意/data
分区的处理,以确保系统的稳定性和功能完整性,另外提醒 我认为这种改法不是最佳改法,不排除这种改法会导致系统其他设置出现异常(但我没遇到过^^)。
本文发布于:2024-01-31 22:36:37,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170671179731877.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |