首先,“mainline集成情况不同”是指 升级前的版本与升级后的版本,一个集成了mainline,一个未集成mainline,导致开机异常;
此情况要求检查 制作OTA升级包的两个版本,mainline集成情况一致:即都集成或都不集成;
还存在一种特殊场景,即前后都集成了mainline,但集成的模块列表不同,如升级前的版本虽集成了mainline,但因某种原因缺少某个模块(常见缺少DocumentsUI模块),导致升级前的版本使用的是AOSP的对应模块,升级后的版本因没有缺少该模块,使用的是Google的对应模块; 则对该模块而言,此场景与升级前未集成mainline,升级后集成mainline情况相同,也会引起开机异常;
此情况,要求检查OTA升级前后版本,mainline模块是否均集成,没有缺失。且需要注意的是,GMS Requirements上明确要求,mainline具有“原子性”,不可缺失任何其要求必须集成的模块。
在开机异常时,log中会出现如下log(以升级前使用AOSP DocumentsUI模块,升级后使用Google DocumentsUI模块为例):()
PackageManager: New package com.google.android.documentsui renamed to replace old package com.android.documentsui
……
AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main
AndroidRuntime: java.lang.IllegalStateException: Signature|privileged permissions not in privapp-permissions whitelist:
{com.android.documentsui(/system/priv-app/DocumentsUIGoogle):android.permission.CHANGE_OVERLAY_PACKAGES, com.android.documentsui (/system/priv-app/DocumentsUIGoogle):android.permission.INTERACT_ACROSS_USERS,
com.android.documentsui(/system/priv-app/DocumentsUIGoogle): android.permission.LOG_COMPAT_CHANGE,
com.android.documentsui (/system/priv-app/DocumentsUIGoogle):android.permission.MODIFY_QUIET_MODE,
com.android.documentsui (/system/priv-app/DocumentsUIGoogle): android.permission.READ_COMPAT_CHANGE_CONFIG}
可见,导致开机异常的错误原因为模块权限与模块对应的whitelist不匹配; 而导致权限不匹配的原因为: 升级后,模块虽从AOSP变成Google对应模块,但其包名依旧使用升级前的包名; Google表示后期也会解决“升级后依旧使用升级前包名”的问题。
|