UIS7862S + Android10.0修改开机Logo、开机动画

本文详细介绍了如何修改安卓设备的开机LOGO和开机动画,包括图片制作、文件替换、编译打包以及烧入验证等步骤。对于开机LOGO,要求为BMP格式,尺寸与屏幕一致;开机动画则需制作BMP图片并制作bootanimation.zip文件,通过adb命令进行替换和验证。同时,提供了修改源码和编译系统的相关指令。

本文详细介绍了基于展锐平台UIS7862S + A10,修改开机Logo(开机第一帧)、替换开机动画.

一. 修改开机LOGO
1.1 制作图片
格式:BMP
尺寸:和屏幕一致
先获取屏幕尺寸:adb shell wm size
在这里插入图片描述
查看图片属性:
在这里插入图片描述
PS:
如不符合以上要求需要客户重新提供!!!
Q1: 图片格式不是BMP格式是否可行?
A10上只能用bmp格式,A13 Jpg,bmp,png都行;

Q2: 若格式不对,是否能直接将文件后缀改成.png ?
不行,需要使用图片处理软件如Photoshop转换格式;

1.2 替换开机Logo
加载图片:
vendor/sprd/release/pac_config/uis7862s_1h10.ini
在这里插入图片描述
图片路径:
vendor/sprd/release/bmp/unisoc_bmp/unione_7105cxt_1080_2340_0325.bmp

1.3 编译
make //全编
cp_sign //签名
makepac //打包
out/target/product/uis7862s_1h10/cp_sign/SHARKL5PRO_SUPER_SIGN/uis7862s_1h10_Natv-userdebug-native_SHARKL5PRO_SUPER_SIGN.pac

1.4 烧入验证
在这里插入图片描述
点击设置-》点击Main page-》勾选Bootlogo和Fastboot –》双击右边路径加载替换得图片

二. 修改开机动画
2.1 制作图片
格式:BMP
尺寸:和屏幕一致
先获取屏幕尺寸:adb shell wm size

2.2 替换文件
2.2.1 临时
adb pull system/media/bootanimation.zip
解压目录:
在这里插入图片描述
其中foleder1, folder2存放图片,desc文件:
1080 2340 15 //分辨率为1080 每秒播放30帧
p 1 2 folder1 //p为行标好、1表示循环1次、2表示循环间隔时间、foler1
//表示播放的文件夹
p 0 2 folder2

替换图片后压缩:
法一:windows工具压缩
foler1, folder2文件夹中的文件后重新仅存储压缩成bootanimation.zip
在这里插入图片描述
法二:ubuntu命令压缩
cd bootanimation/ //不能嵌套在其他文件夹
zip -r -0 bootanimation.zip folder1 folder2 desc.txt //仅存储压缩

2.2.2 修改源码
加载文件:
device/sprd/sharkl5Pro/uis7862s_1h10/uis7862s_1h10_Base.mk
$(call inherit-product-if-exists,
vendor/sprd/carriers/cmcc/files/res/boot/boot_res_cmcc_7105cxt.mk)

vendor/sprd/carriers/cmcc/files/res/boot/boot_res_cmcc_7105cxt.mk
LOCAL_PATH:=vendor/sprd/carriers/cmcc/files/res/boot
PRODUCT_COPY_FILES+=\ $(LOCAL_PATH)/bootanimation_cmcc_7105cxt.zip:system/media/bootanimation.zip
存放路径:
vendor/sprd/carriers/cmcc/files/res/boot/bootanimation_cmcc_7105cxt.zip

2.3 编译
make systemimage;make vbmeta_system.img
在这里插入图片描述
在这里插入图片描述

2.4 烧入验证
2.4.1 快速:
adb root && adb remount
adb shell system/media/bootanimation.zip
adb push bootanimation.zip system/media/
adb reboot

2.4.2 整编
adb reboot bootloader
fastboot flash system –S 200M system.img
fastboot flash vbmeta_system vbmeta_system.img
fastboot reboot

<think>好的,用户问的是关于UIS7870平台在Android 13上适配多屏显示的修改点。首先,我需要确认UIS7870是什么芯片,可能属于某家国产车规级SoC,常用于智能座舱系统。多屏显示在车载场景中很常见,比如中控屏、仪表盘、后排娱乐屏等,所以适配多屏显示是关键需求。 接下来,用户提到Android 13,所以需要了解Android 13在显示系统方面的更新,比如DisplayManager、SurfaceFlinger的变化,以及多屏支持的API是否有变动。可能涉及HDMI、DisplayPort或虚拟显示的输出配置。 然后,适配多屏通常涉及内核驱动、HAL层、SurfaceFlinger配置、WindowManager策略等。需要检查显示驱动是否支持多路输出,HAL层是否有必要的接口实现,比如hwcomposer的配置。Android 13可能引入了新的多屏管理特性,比如动态分辨率切换、热插拔处理的改进,或者对多独立显示的支持。 另外,多屏显示在车载环境下可能有特殊需求,比如不同屏幕的不同DPI、方向、安全区域等,需要确认DisplayPolicy和WindowManager如何管理不同屏幕的窗口。Android 13的窗口管理是否有新API或行为变化,比如对Activity嵌入(ActivityEmbedding)的支持,或者分屏多任务的改进,这些都可能影响多屏适配。 还要考虑权限和安全方面,Android 13加强了隐私保护,多屏显示是否需要新的权限,比如投射内容到副屏是否需要用户授权。同时,系统服务如DisplayService是否需要调整,以确保多屏的生命周期管理正确。 可能还需要修改框架层的配置,比如config.xml中关于多屏的配置项,或者叠加层(overlay)的资源调整,比如分辨率和布局适应不同屏幕。另外,测试多屏时的性能优化,比如GPU渲染多路输出的性能,是否启用硬件加速合成等。 最后,参考Android官方文档中关于多屏支持的更新,以及芯片厂商(如UIS7870的供应商)提供的BSP更新,是否有针对Android 13的驱动或框架层补丁需要应用。可能需要查阅相关平台的开发文档或社区讨论,寻找适配案例。 总结步骤:1. 确认内核驱动支持多输出;2. 更新HAL层实现;3. 调整SurfaceFlinger和WindowManager配置;4. 处理热插拔和动态配置变更;5. 适配新的Android 13 API和安全策略;6. 测试和优化多屏性能及用户体验。</think>针对UIS7870车规级芯片在Android 13上适配多屏显示的关键修改点,以下是系统级的适配路径和技术细节: ### 一、显示子系统驱动层 1. **内核DRM/KMS驱动适配** - 需扩展`drm_driver`实现多CRTC/Encoder/Connector支持 - 配置`dts`文件定义多路显示管线: ```dts display-subsystem { ports = <&vop_out0>, <&vop_out1>; route { route_hdmi: route-hdmi { connect = <&vop_out0_hdmi>; }; route_lvds: route-lvds { connect = <&vop_out1_lvds>; }; } }; ``` - 实现`drm_panel`驱动对第二/第三屏幕的EDID解析 2. **GPU合成优化** - 启用`AFBC`(Arm Frame Buffer Compression)减少带宽占用 - 配置`MALI_GPU`分时复用策略: ```c mali_gpu_data.split_rsc_mgmt = MALI_SPLIT_RSC_MGMT_ENABLED; ``` ### 二、HAL层适配 1. **HWComposer 2.x扩展** - 实现`HWC2::Layer`的多显示上下文分离 - 配置`hwc_display_contents_1`结构体数组: ```cpp hwc_display_contents_1_t* displays[HWC_NUM_DISPLAY_TYPES]; displays[HWC_DISPLAY_PRIMARY] = &primary_display; displays[HWC_DISPLAY_EXTERNAL] = &ext_display; ``` 2. **Gralloc内存分配策略** - 针对不同屏幕设置`GRALLOC_USAGE`标志: ```cpp const uint64_t usage = GRALLOC_USAGE_HW_COMPOSER | GRALLOC_USAGE_HW_TEXTURE | (is_secondary ? GRALLOC_USAGE_EXTERNAL_DISP : 0); ``` ### 三、Framework层修改 1. **DisplayManagerService增强** - 重写`LogicalDisplayMapper`处理动态显示拓扑: ```java public void configureLocked(int changes) { if ((changes & WindowManagerPolicy.DISPLAY_CHANGED_TOPOLOGY) != 0) { reconfigureDisplayLocked(); } } ``` 2. **WindowManager策略** - 在`DisplayPolicy.java`中定义多屏窗口策略: ```java void configureSecondaryDisplay(DisplayContent display) { display.getDisplayInfo().type = Display.TYPE_EXTERNAL; display.getDisplayRotation().setOrientation(DisplayInfo.ROTATION_90); } ``` 3. **SurfaceFlinger多显示合成** - 启用`MultiDisplayComposition`模式: ```cpp sp<DisplayDevice> dispDev = new DisplayDevice( surfaceFlinger, displayType, hwcDisplayId, ... ); surfaceFlinger->mDisplays.add(dispDev); ``` ### 四、Android 13新特性适配 1. **Display切换策略文件** - 新增`config_multipleDisplaySupport`资源配置: ```xml <!-- res/values/config.xml --> <bool name="config_supportsMultiDisplay">true</bool> <integer name="config_maxNumberOfDisplays">3</integer> ``` 2. **动态刷新率适配** - 实现`DisplayModeDirector`多显示实例: ```java for (Display display : displayManager.getDisplays()) { DisplayModeDirector director = new DisplayModeDirector( display.getDisplayId(), ... ); } ``` ### 五、车规级特殊需求 1. **ASIL-B安全显示** - 在`SurfaceControl`中设置安全层级: ```cpp surface->setLayer(SECURE_LAYER_BASE + displayId); surface->setSecure(true); ``` 2. **QoS带宽保障** - 配置显示带宽分配策略: ```shell echo "display0:4000 display1:2000" > /sys/class/devfreq/dmc/qos ``` 该适配方案需配合UIS7870的BSP包进行验证,重点测试多屏异源信号输出(如主屏2560x1600@60Hz + 副屏1920x720@120Hz)下的图形稳定性。建议使用Android 13新增的`dumpsys display`命令进行拓扑分析。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值