问题
之前项目上遇到一个问题:手机系统从版本 A 通过 FOTA 升级到版本 B 后,系统源码中的输入法(LatinIME.apk,下面称 LatinIME)不见了!也就是设置中语言和输入法选项没有 Android Keyboard 这一项,并且设置中的应用选项中也找不到。
问题情况
先了解了一下两个版本的情况:版本 A 是只有 LatinIME 的;版本 B 中除了 LatinIME 还新预制了 GMS 中的输入法(LatinImeGoogle.apk, 下面称 LatinImeGoogle)。升级后版本 B 的 LatinIME 输入法不见了,只剩下 LatinImeGoogle 输入法。
初步分析
分析的大概步骤如下:
首先确定升级后版本 LatinIME 虽然是看不见了,但 apk 包依然存在并且此情况是必现的,所以不可能是 FOTA 升级的某些意外导致的。
同时已经确定的情况:
直接 download B 版本,两个 App 是同时存在的。
不管是 A 版本还是 B 版本通过 adb install 或 adb push 安装两个输入法应用,两个 App 都是同时存在的。
通过 pm list package 命令查看
版本 A 信息如下
package:/system/app/LatinImeGoogle.apk=com.google.android.inputmethod.latin
package:/system/app/LatinIME.apk=com.android.inputmethod.latin
版本 B 的信息如下
package:/system/app/LatinImeGoogle.apk=com.android.inputmethod.latin
版本 B 的输入法包名是变了的,而且是变成了 LatinIME 的包名了!
反编译应用,在 LatinImeGoogle 的 manifest 文件中发现有 orignial-package 属性:
<original-package android:name="co