发布时间:2025-06-24 20:26:23 作者:北方职教升学中心 阅读量:961
车载座舱类产品;这类产品一般使用安卓、
2. 实战分享
2.1 常见错误LOG
【常见log 1】metadata数据丢失,无效的key
invalid keyblob, decryptWithKeymasterKey失败
E vold : Customer VoldNativeService::mountFstabE vold : Customer fscrypt_mount_metadata_encrypted: /data needs_encrypt= 0D vold : Customer read_key metadata_key_dir/key: /metadata/vold/metadata_encryption/keyI hwservicemanager: getTransport: Cannot find entry android.hardware.keymaster@3.0::IKeymasterDevice/default in either framework or device manifest.I vold : List of Keymaster HALs found:I vold : Keymaster HAL #1: Keymaster HAL: 4 from QTI SecurityLevel: TRUSTED_ENVIRONMENT HAL: android.hardware.keymaster@4.1::IKeymasterDevice/defaultD vold : Computing HMAC with params { (seed: 744723236d6e834a1e2cee3198a74f16bb328edc5c8c5e3a6e2b8debad9de8e, nonce: 02f7ac441af115d6e6ad9e61cea9bb07eaa175ece60843172ecfa2fd89c26df) }D vold : Computing HMAC for Keymaster HAL: 4 from QTI SecurityLevel: TRUSTED_ENVIRONMENT HAL: android.hardware.keymaster@4.1::IKeymasterDevice/defaultD vdc : Waited 0ms for voldI vold : Using Keymaster HAL: 4 from QTI for encryption. Security level: TRUSTED_ENVIRONMENT, HAL: android.hardware.keymaster@4.1::IKeymasterDevice/defaultD vold : Customer read_key nees_cp=1 dir=/metadata/vold/metadata_encryption/key temp=/metadata/vold/metadata_encryption/tmpD vold : Key exists, using: /metadata/vold/metadata_encryption/keyI hwservicemanager: getTransport: Cannot find entry android.hardware.keymaster@3.0::IKeymasterDevice/default in either framework or device manifest.I vold : List of Keymaster HALs found:I vold : Keymaster HAL #1: Keymaster HAL: 4 from QTI SecurityLevel: TRUSTED_ENVIRONMENT HAL: android.hardware.keymaster@4.1::IKeymasterDevice/defaultI vold : Using Keymaster HAL: 4 from QTI for encryption. Security level: TRUSTED_ENVIRONMENT, HAL: android.hardware.keymaster@4.1::IKeymasterDevice/defaultE KeymasterUtils: rsp_header->status: -33E vold : begin failed, code -33E vold : Customer retrieveKey decryptWithKeymasterKey failE vold : Customer read_key retrieveOrGenerateKey failE vold : Customer read_key FAIL
【常见log 2】
Failed to read runtime-permissions.xml: /data/misc_de/0/apexdata/com.android.permission/runtime-permissions.xml
--------- beginning of crashE AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: mainE AndroidRuntime: java.lang.IllegalStateException: Failed to read runtime-permissions.xml: /data/misc_de/0/apexdata/com.android.permission/runtime-permissions.xmlE AndroidRuntime: at com.android.permission.persistence.RuntimePermissionsPersistenceImpl.readForUser(RuntimePermissionsPersistenceImpl.java:80)E AndroidRuntime: at com.android.server.pm.Settings$RuntimePermissionPersistence.readStateForUserSync(Settings.java:5721)E AndroidRuntime: at com.android.server.pm.Settings.readLPw(Settings.java:3199)E AndroidRuntime: at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:1912)E AndroidRuntime: at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:1496)E AndroidRuntime: at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:1235)E AndroidRuntime: at com.android.server.SystemServer.run(SystemServer.java:939)E AndroidRuntime: at com.android.server.SystemServer.main(SystemServer.java:651)E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeIE AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:920)E AndroidRuntime: Caused by: org.xmlpull.v1.XmlPullParserException: Invalid stream or encoding: java.io.IOException: read failed: EIO (I/O error) (position:START_DOCUMENT null@1:1) caused by: java.io.IOException: read failed: EIO (I/O error)E AndroidRuntime: at com.android.org.kxml2.io.KXmlParser.setInput(KXmlParser.java:1809)E AndroidRuntime: at com.android.permission.persistence.RuntimePermissionsPersistenceImpl.readForUser(RuntimePermissionsPersistenceImpl.java:74)E AndroidRuntime: ... 10 moreE AndroidRuntime: Error reporting crashE AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'void android.app.IActivityManager.handleApplicationCrash(android.os.IBinder, android.app.ApplicationErrorReport$ParcelableCrashInfo)' on a null object referenceE AndroidRuntime: at com.android.internal.os.RuntimeInit$KillApplicationHandler.uncaughtException(RuntimeInit.java:156)E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1073)E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)E AndroidRuntime: at java.lang.Thread.dispatchUncaughtException(Thread.java:2306)
2.2 解决问题
这里解决问题,大致分为两大类;一是从硬件设计角度规避,二是从软件角度修复和避免问题发生
2.2.1 硬件设计
从问题发生的手法和发生的设备看,我们可以看出来这类问题发生有相同之处,那就是这类设备是自身不带电池的(类似手机的Battery),是靠外部电源供电的(稳压源,电源适配器或者POE供电),受供电稳定性的影响(可以认为是人为直接断电,手机这样的产品因为电池不可拆卸,一般不会发生类似问题),设备会出现突然断电的情况(系统来不及反应,无法保存重要文件)。Linux或者Ubuntu这类非试试系统,这类系统一般使用文件系统的。
现象:
1. 安卓系统会卡在开机动画
2. 有一部分设备会进入Recovery模式,无法正常开机
【适用产品/场景】:
智能硬件、
文件:default/fstab.qcom
/dev/block/bootdevice/by-name/userdata /data f2fs-noatime,nosuid,nodev,discard,inlinecrypt,reserve_root=32768,resgid=1065,fsync_mode=nobarrier+noatime,nosuid,nodev,discard,inlinecrypt,reserve_root=32768,resgid=1065,fsync_mode=strict
针对metadata丢失的对策(来自谷歌的patch)
fstab: data=journal,commit=1 for /metadata
Since Ext4 doesn't implement "-o sync", it commits metadata at every 5 secs.
This may cause /metadata corruption.
Bug: 162883014 Signed-off-by: Jaegeuk Kim <jaegeuk@google.com> Signed-off-by: Randall Huang <huangrandall@google.com> Change-Id: Icd38754bad1b1529d01165ea8c703c214d20bb4b
-/dev/block/by-name/metadata /metadata ext4 noatime,nosuid,nodev,discard,sync -wait,formattable,first_stage_mount,check+/dev/block/by-name/metadata /metadata ext4 noatime,nosuid,nodev,discard,data=journal,commit=1+wait,formattable,first_stage_mount,check
Patch来源:https://cs.android.com/android/_/android/device/google/coral/+/5af424740c5de0d61dd5a00c9c22d566c3393b60
创作不易,欢迎点赞收藏,欢迎评论交流!
支持原创,从你我做起!