1、下面报错有可能是selinux的原因 Read-only file system
2、接着push 动画 reboot之后抓取logcat出现 以下报错。看着大概意思像是压缩格式有问题。
3、于是重新压缩一下报错没有再出现 ,压缩格式默认是标准,这里必须要改成存储格式哈
4、修改之后重新push 动画zip包 ,又报了avc权限错误。如下logcat所示。
.731 1533-1533 Binder:1533_2 system_process I type=1400 audit(0.0:6935): avc: denied { write } for name="media" dev="dm-10" ino=182 scontext=u:r:system_server:s0 tcontext=u:object_r:media_rw_data_file:s0 tclass=dir permissive=1
2024-05-29 12:46:05.731 1533-1533 Binder:1533_2 system_process I type=1400 audit(0.0:6936): avc: denied { add_name } for name="bootanimation.zip" scontext=u:r:system_server:s0 tcontext=u:object_r:media_rw_data_file:s0 tclass=dir permissive=1
2024-05-29 12:46:05.731 1533-1533 Binder:1533_2 system_process I type=1400 audit(0.0:6937): avc: denied { create } for name="bootanimation.zip" scontext=u:r:system_server:s0 tcontext=u:object_r:media_rw_data_file:s0 tclass=file permissive=1
2024-05-29 12:46:05.731 1533-1533 Binder:1533_2 system_process I type=1400 audit(0.0:6938): avc: denied { open } for path="/data/media/bootanimation.zip" dev="dm-10" ino=3223 scontext=u:r:system_server:s0 tcontext=u:object_r:media_rw_data_file:s0 tclass=fil
5、添加selinux权限代码 如下,不知道请看我之前写的Selinux权限规则套公式哈,这里不再赘述。
allow system_server media_rw_data_file:dir write;allow system_server media_rw_data_file:file open;allow system_server media_rw_data_file:file create;allow system_server media_rw_data_file:dir add_name;
6、再重启之后结果 如下图logcat 所示哈
7、当然你也可以在system/bin目录下执行./bootanimation shell脚本回车即可看到结果哈。
另外补充说明:
7.1 Android10 system分区 默认动画路径system/media/bootanimation.zip
7.2 Android 12 增加product分区,动画默认路径修改成product/media/bootanimation.zip
7.3动画压缩格式一定要记得改成存储格式,否则就会报bootanimation.zip is compressed ,must be only stored.切记哈!
7.4 由于循环播放的folder
中的每帧都是以纹理对象存储在纹理内存中再upload
到GPU
做渲染的,以便下次循环播放不需要重新解析.如果动画包中的图片太多或者图片的size
很大时,则会导致占用较多的memory
,因此为保证开机的performance
,开机动画不建议太复杂.
转载请注明出处高通Android开关机动画踩坑简单记录-CSDN博客,谢谢!