[RK3588 Android12] Modifique o logotipo de inicialização e reproduza o vídeo de inicialização

1. Modifique o logotipo de inicialização

Substitua os dois arquivos de imagem kernel-5.10/logo.bmp e logo_kernel.bmp para modificar o logotipo de inicialização. Após a substituição, erro de compilação
: out/target/product/rk3588_s/boot.img muito grande (50720768 > 41943040)
modificar dispositivo /rockchip /common/build/rockchip/Partitions.mk
O valor de BOARD_BOOTIMAGE_PARTITION_SIZE, altere o valor para um valor maior.

diff --git a/device/rockchip/common/build/rockchip/Partitions.mk b/device/rockchip/common/build/rockchip/Partitions.mk
index e80da5f360..31331b3e9a 100644
--- a/device/rockchip/common/build/rockchip/Partitions.mk
+++ b/device/rockchip/common/build/rockchip/Partitions.mk
@@ -72,7 +72,7 @@ else
     BOARD_BOOTIMAGE_PARTITION_SIZE ?= 67108864
     BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE ?= 41943040
   else
-    BOARD_BOOTIMAGE_PARTITION_SIZE ?= 41943040
+    BOARD_BOOTIMAGE_PARTITION_SIZE ?= 67108864
   endif
   ifneq ($(strip $(TARGET_DEVICE_DIR)),)
     #$(info $(TARGET_DEVICE_DIR)/parameter.txt not found! Use default BOARD_SYSTEMIMAGE_PARTITION_SIZE=$(BOARD_SYSTEMIMAGE_PARTITION_SIZE))

2. Reproduza o vídeo de inicialização

Verifique o código-fonte framework/base/cmds/bootanimation/BootAnimation.cpp
para ver o local de armazenamento do vídeo
static const char DATA_BOOTVIDEO_FILE[] = “/data/local/bootanimation.ts”;
static const char SYSTEM_BOOTVIDEO_FILE[] = “/product/ media/ bootanimation.ts";

Coloque o vídeo em device/rockchip/rk3588/ e renomeie-o para bootanimation.ts;
modifique device/rockchip/rk3588/device.mk, adicione
PRODUCT_COPY_FILES +=
$(LOCAL_PATH)/booanimation.ts:/product/media/booanimation. ts
e
persist.sys.bootvideo.enable = true

diff --git a/device/rockchip/rk3588/device.mk b/device/rockchip/rk3588/device.mk
index deb58c1578..6b8b89a535 100644
--- a/device/rockchip/rk3588/device.mk
+++ b/device/rockchip/rk3588/device.mk
@@ -78,7 +78,8 @@ PRODUCT_COPY_FILES += \
 PRODUCT_COPY_FILES += \
        device/rockchip/rk3588/camera_test/reset_camera.sh:vendor/etc/camera/reset_camera.sh \
        device/rockchip/rk3588/camera_test/rkaiq_tool_server:vendor/bin/rkaiq_tool_server
-
+PRODUCT_COPY_FILES += \
+    $(LOCAL_PATH)/bootanimation.ts:/product/media/bootanimation.ts
 #
 # add Rockchip properties here
 #
@@ -103,4 +104,5 @@ PRODUCT_PROPERTY_OVERRIDES += \
                 ro.kernel.android.checkjni=0 \
                 ro.build.shutdown_timeout=6 \
                 persist.enable_task_snapshots=false \
-                ro.vendor.frameratelock=true
+                ro.vendor.frameratelock=true \
+                persist.sys.bootvideo.enable = true

Modifique device/rockchip/common/device.mk, comente o seguinte conteúdo
#PRODUCT_COPY_FILES +=
$(LOCAL_PATH)/booanimation.zip:/system/media/bootanimation.zip

diff --git a/device/rockchip/common/device.mk b/device/rockchip/common/device.mk
index 1907370db6..c7fa0bffba 100644
--- a/device/rockchip/common/device.mk
+++ b/device/rockchip/common/device.mk
@@ -829,7 +829,7 @@ else ifeq ($(TARGET_BOARD_PLATFORM_PRODUCT),atv)
   PRODUCT_PROPERTY_OVERRIDES += \
        ro.target.product=atv \
        ro.com.google.clientidbase=android-rockchip-tv
-  PRODUCT_COPY_FILES += \
+  #PRODUCT_COPY_FILES += \
        $(LOCAL_PATH)/bootanimation.zip:/system/media/bootanimation.zip
 
   $(call inherit-product, device/rockchip/common/modules/rockchip_apps_box.mk)

3. A reprodução do vídeo de inicialização é anormal

O vídeo de inicialização terá um problema de exibição descentralizado. Isso ocorre principalmente porque o vídeo de inicialização usa a largura e a altura do dispositivo de exibição original. Quando o sistema estiver em serviço, o DisplayManagerService atualizará as informações de configuração de resolução após obter as informações de substituição da exibição, então modifique o bootanimation para obter a exibição Para resolver este problema,
modifique a função status_t BootAnimation::readyToRun() em framework/base/cmds/bootanimation/BootAnimation.cpp para adicionar o seguinte código

diff --git a/frameworks/base/cmds/bootanimation/BootAnimation.cpp b/frameworks/base/cmds/bootanimation/BootAnimation.cpp
index 26345c12fd..97e58d039b 100644
--- a/frameworks/base/cmds/bootanimation/BootAnimation.cpp
+++ b/frameworks/base/cmds/bootanimation/BootAnimation.cpp
@@ -515,7 +515,30 @@ status_t BootAnimation::readyToRun() {
    
    
     mMaxWidth = android::base::GetIntProperty("ro.surface_flinger.max_graphics_width", 0);
     mMaxHeight = android::base::GetIntProperty("ro.surface_flinger.max_graphics_height", 0);
     ui::Size resolution = displayMode.resolution;
-    resolution = limitSurfaceSize(resolution.width, resolution.height);
+    
+    int override_width = 0, override_height = 0;
+    char buf[PROPERTY_VALUE_MAX] = {
    
    0};
+    char *val;
+    
+    property_get("persist.display.size_force", buf, "");
+    if (buf[0] == '\0') {
    
    
+      property_get("ro.config.size_override", buf, "");
+    }
+    val = strtok(buf, ",");
+    if (val != NULL) {
    
    
+      override_width = atoi(val);
+    }
+    val = strtok(NULL, ",");
+    if (val != NULL) {
    
    
+      override_height = atoi(val);
+     }
+
+    if (override_width != 0 && override_height != 0) {
    
    
+      resolution.width = override_width;
+      resolution.height = override_height;
+     } else {
    
    
+       resolution = limitSurfaceSize(resolution.width, resolution.height);
+     }
     // create the native surface
     sp<SurfaceControl> control = session()->createSurface(String8("BootAnimation"),
             resolution.getWidth(), resolution.getHeight(), PIXEL_FORMAT_RGB_565);

Para resolver o problema de áudio e vídeo fora de sincronia, modifique device/rockchip/rk3588/device.mk e adicione persist.sys.bootvideo.delaytime = 3

diff --git a/device/rockchip/rk3588/device.mk b/device/rockchip/rk3588/device.mk
index deb58c1578..5c058c87fe 100644
--- a/device/rockchip/rk3588/device.mk
+++ b/device/rockchip/rk3588/device.mk
@@ -103,4 +104,6 @@ PRODUCT_PROPERTY_OVERRIDES += \
                 ro.kernel.android.checkjni=0 \
                 ro.build.shutdown_timeout=6 \
                 persist.enable_task_snapshots=false \
-                ro.vendor.frameratelock=true
+                ro.vendor.frameratelock=true \
+                persist.sys.bootvideo.enable = true \
+                persist.sys.bootvideo.delaytime = 3

Guess you like

Origin blog.csdn.net/zsq122021821/article/details/128392186