当前位置: 首页 > news >正文

海南景区网站建设方案网站推广是网站建设完成之后的长期工作。

海南景区网站建设方案,网站推广是网站建设完成之后的长期工作。,国家级建设网站,今天发生的重大新闻5条MTK APP实现动态修改logo和开机动画 前言一、修改对新分区的权限1.修改开机动画对新分区的权限2.修改系统APP对新分区的权限3.修改SE权限,不然编译会报错4.修改开机动画文件,让其加载新分区中的文件 二、系统APP代码使用1.系统app修改开机logo2.系统app修改开机动画…

MTK APP实现动态修改logo和开机动画

  • 前言
  • 一、修改对新分区的权限
    • 1.修改开机动画对新分区的权限
    • 2.修改系统APP对新分区的权限
    • 3.修改SE权限,不然编译会报错
    • 4.修改开机动画文件,让其加载新分区中的文件
  • 二、系统APP代码使用
    • 1.系统app修改开机logo
    • 2.系统app修改开机动画
    • 3.系统app修改开机音乐
  • 三、如何定制开机logo
  • 总结


前言

之前写过如何动态替换开机logo的MTK修改动态切换开机logo,恢复出厂设置不还原
以及OTA升级开机logo的MTK android10修改Logo OTA AB分区
但是又有需求,动态替换开机动画,开机logo,不随OTA升级变化,但是开机动画实际上是在system分区中的,OTA升级如果有修改,就会替换,而且,开机动画文件是只读文件,就相出了一个方法, 新建一个分区,把开机动画放入新分区中,这个分区不加入OTA升级,
先看新加分区的修改MTK Android10添加分区
不同平台或者android版本的话,大部分是一样的,修改思路相同


一、修改对新分区的权限

1.修改开机动画对新分区的权限

diff --git a/alps/device/mediatek/sepolicy/basic/non_plat/mtkbootanimation.te b/alps/device/mediatek/sepolicy/basic/non_plat/mtkbootanimation.te
index 491cf8eada..a378ead82e 100755
--- a/alps/device/mediatek/sepolicy/basic/non_plat/mtkbootanimation.te
+++ b/alps/device/mediatek/sepolicy/basic/non_plat/mtkbootanimation.te
@@ -51,6 +51,8 @@ allow mtkbootanimation proc_perfmgr:file {open read ioctl};allow mtkbootanimation mediaextractor:dir search;allow mtkbootanimation debugfs_ion:dir search;
+allow mtkbootanimation xunye_file:dir rw_dir_perms;
+allow mtkbootanimation xunye_file:file { read write open ioctl map};allow mediaserver mtkbootanimation:dir search;allowxperm mtkbootanimation proc_ged:file ioctl { proc_ged_ioctls };

2.修改系统APP对新分区的权限

diff --git a/alps/device/mediatek/sepolicy/bsp/non_plat/system_app.te b/alps/device/mediatek/sepolicy/bsp/non_plat/system_app.te
index 20cffc85b6..566650df89 100755
--- a/alps/device/mediatek/sepolicy/bsp/non_plat/system_app.te
+++ b/alps/device/mediatek/sepolicy/bsp/non_plat/system_app.te
@@ -253,3 +253,7 @@ allow system_app ttyS_device:chr_file { rw_file_perms };allow system_app app_data_file:file { rw_file_perms };+# add for xunye
+allow system_app xunye_file:file { getattr unlink open read write create };
+allow system_app xunye_file:dir rw_dir_perms;这里包括了systemapp对logo.bin的修改权限
diff --git a/alps/device/mediatek/mt8168/sepolicy/basic/system_app.te b/alps/device/mediatek/mt8168/sepolicy/basic/system_app.te
index 319bd99c59..378aa02a98 100644
--- a/alps/device/mediatek/mt8168/sepolicy/basic/system_app.te
+++ b/alps/device/mediatek/mt8168/sepolicy/basic/system_app.te
@@ -14,3 +14,9 @@ allow system_app system_data_file:file create;allow system_app system_data_file:dir write;allow system_app system_data_file:dir read;allow system_app system_data_file:dir add_name;
+allow system_app apk_data_file:dir write;
+allow system_app logo_block_device:blk_file write;
+allow system_app logo_block_device:blk_file read;
+allow system_app logo_block_device:blk_file open;
+allow system_app logo_block_device:blk_file getattr;
+allow system_app xunye_file:file setattr;

3.修改SE权限,不然编译会报错

diff --git a/alps/system/sepolicy/prebuilts/api/29.0/public/app.te b/alps/system/sepolicy/prebuilts/api/29.0/public/app.te
index d5a079b769..aa094cd2cc 100644
--- a/alps/system/sepolicy/prebuilts/api/29.0/public/app.te
+++ b/alps/system/sepolicy/prebuilts/api/29.0/public/app.te
@@ -371,7 +371,7 @@ binder_call({ appdomain -coredomain }, ashmemd)neverallow { appdomain -bluetooth -network_stack } self:capability_class_set *;# Block device access.
-neverallow appdomain dev_type:blk_file { read write };
+neverallow { appdomain -system_app } dev_type:blk_file { read write };# Access to any of the following character devices.neverallow appdomain {
@@ -467,7 +467,7 @@ neverallow {appdomain -system_app} system_data_file:dir_file_class_set# Write to various other parts of /data.neverallow appdomain drm_data_file:dir_file_class_set{ create write setattr relabelfrom relabelto append unlink link rename };
-neverallow { appdomain -platform_app }
+neverallow { appdomain -platform_app -system_app}apk_data_file:dir_file_class_set{ create write setattr relabelfrom relabelto append unlink link rename };neverallow { appdomain -platform_app }
diff --git a/alps/system/sepolicy/prebuilts/api/29.0/public/domain.te b/alps/system/sepolicy/prebuilts/api/29.0/public/domain.te
index f348701819..ef839d1e6d 100644
--- a/alps/system/sepolicy/prebuilts/api/29.0/public/domain.te
+++ b/alps/system/sepolicy/prebuilts/api/29.0/public/domain.te
@@ -818,6 +818,7 @@ full_treble_only(`# /data/vendorneverallow {coredomain
+       -domain-appdomain # TODO(b/34980020) remove exemption for appdomain-data_between_core_and_vendor_violators-init
@@ -836,6 +837,7 @@ full_treble_only(`-vold_prepare_subdirs} {data_file_type
+         -data_file_type-core_data_file_type# TODO(b/72998741) Remove exemption. Further restricted in a subsequent# neverallow. Currently only getattr and search are allowed.
diff --git a/alps/system/sepolicy/public/app.te b/alps/system/sepolicy/public/app.te
index d5a079b769..aa094cd2cc 100644
--- a/alps/system/sepolicy/public/app.te
+++ b/alps/system/sepolicy/public/app.te
@@ -371,7 +371,7 @@ binder_call({ appdomain -coredomain }, ashmemd)neverallow { appdomain -bluetooth -network_stack } self:capability_class_set *;# Block device access.
-neverallow appdomain dev_type:blk_file { read write };
+neverallow { appdomain -system_app } dev_type:blk_file { read write };# Access to any of the following character devices.neverallow appdomain {
@@ -467,7 +467,7 @@ neverallow {appdomain -system_app} system_data_file:dir_file_class_set# Write to various other parts of /data.neverallow appdomain drm_data_file:dir_file_class_set{ create write setattr relabelfrom relabelto append unlink link rename };
-neverallow { appdomain -platform_app }
+neverallow { appdomain -platform_app -system_app}apk_data_file:dir_file_class_set{ create write setattr relabelfrom relabelto append unlink link rename };neverallow { appdomain -platform_app }
diff --git a/alps/system/sepolicy/public/domain.te b/alps/system/sepolicy/public/domain.te
index f348701819..ef839d1e6d 100644
--- a/alps/system/sepolicy/public/domain.te
+++ b/alps/system/sepolicy/public/domain.te
@@ -818,6 +818,7 @@ full_treble_only(`# /data/vendorneverallow {coredomain
+       -domain-appdomain # TODO(b/34980020) remove exemption for appdomain-data_between_core_and_vendor_violators-init
@@ -836,6 +837,7 @@ full_treble_only(`-vold_prepare_subdirs} {data_file_type
+         -data_file_type-core_data_file_type# TODO(b/72998741) Remove exemption. Further restricted in a subsequent# neverallow. Currently only getattr and search are allowed.

4.修改开机动画文件,让其加载新分区中的文件

复制文件到新分区中

diff --git a/alps/device/mediateksample/xxxxxxxx/device.mk b/alps/device/mediateksample/xxxxxxxx/device.mk
index 22e9bdc759..8fd857fd9c 100755
--- a/alps/device/mediateksample/xxxxxxxx/device.mk
+++ b/alps/device/mediateksample/xxxxxxxx/device.mk
@@ -277,6 +277,9 @@ PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists, vendor/het/appPRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists, vendor/het/app/ClifeScreenReceive/lib/libndkbitmap.so:system/lib/libndkbitmap.so)PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists, vendor/het/app/ClifeScreenReceive/lib/libsfftranscoder.so:system/lib/libsfftranscoder.so)+PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists, vendor/het/images/1024_600/bootanimation.zip:xunye/media/bootanimation.zip)
+PRODUCT_COPY_FILES += $(call add-to-product-copy-files-if-exists, vendor/het/audios/bootaudio.mp3:xunye/media/bootaudio.mp3)

修改bootanimation.cpp ,这个其实比较简单, 把默认加载system/media的目录改成xunye/media即可;

diff --git a/alps/vendor/mediatek/proprietary/operator/frameworks/bootanimation/MtkBootanimation/BootAnimation.cpp b/alps/vendor/mediatek/proprietary/operator/frameworks/bootanimation/MtkBootanimation/BootAnimation.cpp
index 5ebc874a13..927944e61f 100755
--- a/alps/vendor/mediatek/proprietary/operator/frameworks/bootanimation/MtkBootanimation/BootAnimation.cpp
+++ b/alps/vendor/mediatek/proprietary/operator/frameworks/bootanimation/MtkBootanimation/BootAnimation.cpp
@@ -121,12 +121,12 @@ static const char* mResourcePath[MNC_COUNT][PATH_COUNT] =#if !(defined(MSSI_MTK_CARRIEREXPRESS_PACK) && defined(MTK_TER_SERVICE))static const char* mAudioPath[2][PATH_COUNT] =
-    {{"/system/media/bootaudio.mp3", "/custom/media/bootaudio.mp3", "/data/local/bootaudio.mp3"} , /*  bootaudio path  */
-     {"/system/media/shutaudio.mp3", "/custom/media/shutaudio.mp3", "/data/local/shutaudio.mp3"} /*  shutaudio path  */
+    {{"/xunye/media/bootaudio.mp3", "/custom/media/bootaudio.mp3", "/data/local/bootaudio.mp3"} , /*  bootaudio path  */
+     {"/xunye/media/shutaudio.mp3", "/custom/media/shutaudio.mp3", "/data/local/shutaudio.mp3"} /*  shutaudio path  */};#endifstatic const char* myAudioPath[2] =
-    {"/system/media/bootaudio.mp3", "/system/media/1/bootaudio.mp3"};
+    {"/xunye/media/bootaudio.mp3", "/system/media/1/bootaudio.mp3"};namespace android {@@ -136,10 +136,10 @@ static const char SYSTEM_SHUTANIMATION_FILE[] = "/system/media/shutanimation.zipstatic const char CUSTOM_SHUTANIMATION_FILE[] = "/custom/media/shutanimation.zip";static const char USER_SHUTANIMATION_FILE[] = "/data/local/shutanimation.zip";-static const char OEM_BOOTANIMATION_FILE[] = "/oem/media/bootanimation.zip";
+static const char OEM_BOOTANIMATION_FILE[] = "/xunye/media/bootanimation.zip";static const char SYSTEM_BOOTANIMATION_FILE[] = "/system/media/bootanimation.zip";static const char SYSTEM_ENCRYPTED_BOOTANIMATION_FILE[] = "/system/media/bootanimation-encrypted.zip";
-static const char OEM_SHUTDOWNANIMATION_FILE[] = "/oem/media/shutdownanimation.zip";
+static const char OEM_SHUTDOWNANIMATION_FILE[] = "/xunye/media/shutdownanimation.zip";static const char SYSTEM_SHUTDOWNANIMATION_FILE[] = "/system/media/shutdownanimation.zip";static const char SYSTEM_DATA_DIR_PATH[] = "/data/system";
@@ -535,6 +535,7 @@ status_t BootAnimation::readyToRun() {for (const char* f : (bBootOrShutDown ? bootFiles : shutdownFiles)) {if (access(f, R_OK) == 0) {mZipFileName = f;
+                       ALOGE(" bootFiles mZipFileName f=%s",f);return NO_ERROR;}}
@@ -1097,7 +1098,7 @@ bool BootAnimation::movie()if(strcmp(nvram_logo_index, "1") == 0){mZipFileName="/system/media/1/bootanimation.zip";}
-       
+       ALOGE("movie mZipFileName: %s", mZipFileName.string());Animation* animation = loadAnimation(mZipFileName);if (animation == NULL)return false;

二、系统APP代码使用

1.系统app修改开机logo

public static void copyLogoBin() {File srcFile = new File("/sdcard/logo.bin");if(!srcFile.exists())return;String logoPath = "dev/block/platform/bootdevice/by-name/logo";
//        String logoPath = "/dev/block/mmcblk0p19";Log.e("logo","logoPath="+logoPath);File dstFile =  new File(logoPath);OutputStream os = null;try {FileInputStream is = new FileInputStream(srcFile);os = new BufferedOutputStream(new FileOutputStream(dstFile, false));int curSize = 0;byte[] data = new byte[1024];for (int len; (len = is.read(data)) != -1; ) {os.write(data, 0, len);curSize += len;}} catch (Exception e) {e.printStackTrace();}finally {try {if (os != null) {os.close();}} catch (IOException e) {e.printStackTrace();}
//            srcFile.delete();}}

2.系统app修改开机动画

public static void copyLogoBootanimation() {File srcFile = new File("/sdcard/bootanimation.zip");if(!srcFile.exists())return;String logoPath = "/xunye/media/bootanimation.zip";
//        String logoPath = "/dev/block/mmcblk0p19";Log.e("logo","BootanimationPath="+logoPath);File dstFile =  new File(logoPath);if(dstFile.exists())dstFile.delete();try {dstFile.createNewFile();} catch (IOException e) {throw new RuntimeException(e);}try {Os.chmod(dstFile.getAbsolutePath(), 0777);} catch (ErrnoException e) {e.printStackTrace();}OutputStream os = null;try {FileInputStream is = new FileInputStream(srcFile);os = new BufferedOutputStream(new FileOutputStream(dstFile, false));int curSize = 0;byte[] data = new byte[1024];for (int len; (len = is.read(data)) != -1; ) {os.write(data, 0, len);curSize += len;}} catch (Exception e) {e.printStackTrace();}finally {try {if (os != null) {os.close();}} catch (IOException e) {e.printStackTrace();}
//            srcFile.delete();}}

3.系统app修改开机音乐

public static void copyBootAudio() {File srcFile = new File("/sdcard/bootaudio.mp3");if(!srcFile.exists())return;String logoPath = "/xunye/media/bootaudio.mp3";
//        String logoPath = "/dev/block/mmcblk0p19";Log.e("logo","bootaudio.mp3 Path="+logoPath);File dstFile =  new File(logoPath);if(dstFile.exists())dstFile.delete();try {dstFile.createNewFile();} catch (IOException e) {throw new RuntimeException(e);}try {Os.chmod(dstFile.getAbsolutePath(), 0777);} catch (ErrnoException e) {e.printStackTrace();}OutputStream os = null;try {FileInputStream is = new FileInputStream(srcFile);os = new BufferedOutputStream(new FileOutputStream(dstFile, false));int curSize = 0;byte[] data = new byte[1024];for (int len; (len = is.read(data)) != -1; ) {os.write(data, 0, len);curSize += len;}} catch (Exception e) {e.printStackTrace();}finally {try {if (os != null) {os.close();}} catch (IOException e) {e.printStackTrace();}
//            srcFile.delete();}}

三、如何定制开机logo

需要几个文件,在linux下编译
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/tool/bmp_to_raw
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/tool/zpipe
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/img_hdr_logo.cfg
vendor/mediatek/proprietary/bootable/bootloader/lk/scripts/mkimage
然后复制一下logo.bin编译的脚本,修改成make_logo.sh文件
如下

#!/bin/bashif [ "$1" = "" ]; thenecho "Please input BOOT_LOGO name,"echo "xunye"exit
fiBASELOGO=$1
BOOT_LOGO_RESOURCE=boot_logo.raw
echo "BASELOGO=${BASELOGO}"# step 1 make hdplus1560_uboot.raw  hdplus1560_kernel.raw
echo "===================step 1 bmp_to_raw make uboot and kernel raw===================="
#./bmp_to_raw  ./${BASELOGO}/${BASELOGO}_kernel.raw  logo.bmp
#./bmp_to_raw  ./${BASELOGO}/${BASELOGO}_uboot.raw   logo.bmp./bmp_to_raw ./temp0.raw ./${BASELOGO}/"${BASELOGO}_uboot".bmp
./bmp_to_raw ./temp1.raw ./${BASELOGO}/"${BASELOGO}_battery".bmp
./bmp_to_raw ./temp2.raw ./${BASELOGO}/"${BASELOGO}_low_battery".bmp
./bmp_to_raw ./temp3.raw ./${BASELOGO}/"${BASELOGO}_charger_ov".bmp
./bmp_to_raw ./temp4.raw ./${BASELOGO}/"${BASELOGO}_num_0".bmp
./bmp_to_raw ./temp5.raw ./${BASELOGO}/"${BASELOGO}_num_1".bmp
./bmp_to_raw ./temp6.raw ./${BASELOGO}/"${BASELOGO}_num_2".bmp
./bmp_to_raw ./temp7.raw ./${BASELOGO}/"${BASELOGO}_num_3".bmp
./bmp_to_raw ./temp8.raw ./${BASELOGO}/"${BASELOGO}_num_4".bmp
./bmp_to_raw ./temp9.raw ./${BASELOGO}/"${BASELOGO}_num_5".bmp
./bmp_to_raw ./temp10.raw ./${BASELOGO}/"${BASELOGO}_num_6".bmp
./bmp_to_raw ./temp11.raw ./${BASELOGO}/"${BASELOGO}_num_7".bmp
./bmp_to_raw ./temp12.raw ./${BASELOGO}/"${BASELOGO}_num_8".bmp
./bmp_to_raw ./temp13.raw ./${BASELOGO}/"${BASELOGO}_num_9".bmp
./bmp_to_raw ./temp14.raw ./${BASELOGO}/"${BASELOGO}_num_percent".bmp
./bmp_to_raw ./temp15.raw ./${BASELOGO}/"${BASELOGO}_bat_animation_01".bmp
./bmp_to_raw ./temp16.raw ./${BASELOGO}/"${BASELOGO}_bat_animation_02".bmp
./bmp_to_raw ./temp17.raw ./${BASELOGO}/"${BASELOGO}_bat_animation_03".bmp
./bmp_to_raw ./temp18.raw ./${BASELOGO}/"${BASELOGO}_bat_animation_04".bmp
./bmp_to_raw ./temp19.raw ./${BASELOGO}/"${BASELOGO}_bat_animation_05".bmp
./bmp_to_raw ./temp20.raw ./${BASELOGO}/"${BASELOGO}_bat_animation_06".bmp
./bmp_to_raw ./temp21.raw ./${BASELOGO}/"${BASELOGO}_bat_animation_07".bmp
./bmp_to_raw ./temp22.raw ./${BASELOGO}/"${BASELOGO}_bat_animation_08".bmp
./bmp_to_raw ./temp23.raw ./${BASELOGO}/"${BASELOGO}_bat_animation_09".bmp
./bmp_to_raw ./temp24.raw ./${BASELOGO}/"${BASELOGO}_bat_animation_10".bmp
./bmp_to_raw ./temp25.raw ./${BASELOGO}/"${BASELOGO}_bat_10_01".bmp
./bmp_to_raw ./temp26.raw ./${BASELOGO}/"${BASELOGO}_bat_10_02".bmp
./bmp_to_raw ./temp27.raw ./${BASELOGO}/"${BASELOGO}_bat_10_03".bmp
./bmp_to_raw ./temp28.raw ./${BASELOGO}/"${BASELOGO}_bat_10_04".bmp
./bmp_to_raw ./temp29.raw ./${BASELOGO}/"${BASELOGO}_bat_10_05".bmp
./bmp_to_raw ./temp30.raw ./${BASELOGO}/"${BASELOGO}_bat_10_06".bmp
./bmp_to_raw ./temp31.raw ./${BASELOGO}/"${BASELOGO}_bat_10_07".bmp
./bmp_to_raw ./temp32.raw ./${BASELOGO}/"${BASELOGO}_bat_10_08".bmp
./bmp_to_raw ./temp33.raw ./${BASELOGO}/"${BASELOGO}_bat_10_09".bmp
./bmp_to_raw ./temp34.raw ./${BASELOGO}/"${BASELOGO}_bat_10_10".bmp
./bmp_to_raw ./temp35.raw ./${BASELOGO}/"${BASELOGO}_bat_bg".bmp
./bmp_to_raw ./temp36.raw ./${BASELOGO}/"${BASELOGO}_bat_img".bmp
./bmp_to_raw ./temp37.raw ./${BASELOGO}/"${BASELOGO}_bat_100".bmp
./bmp_to_raw ./temp38.raw ./${BASELOGO}/"${BASELOGO}_kernel".bmp
./bmp_to_raw ./temp39.raw ./${BASELOGO}/"${BASELOGO}_uboot_clife".bmp
./bmp_to_raw ./temp40.raw ./${BASELOGO}/"${BASELOGO}_kernel_clife".bmp
echo "=========done"# step 2 zpipe all raw to boot_logo.raw
echo "===================step 2 zpipe all raws get ${BASELOGO}.raw===================="
#./zpipe -l 9 ${BOOT_LOGO_RESOURCE} ./${BASELOGO}/${BASELOGO}_uboot.raw ./${BASELOGO}/${BASELOGO}_uboot_clife.raw ./${BASELOGO}/${BASELOGO}_battery.raw ./${BASELOGO}/${BASELOGO}_low_battery.raw  ./${BASELOGO}/${BASELOGO}_charger_ov.raw ./${BASELOGO}/${BASELOGO}_num_0.raw ./${BASELOGO}/${BASELOGO}_num_1.raw ./${BASELOGO}/${BASELOGO}_num_2.raw ./${BASELOGO}/${BASELOGO}_num_3.raw ./${BASELOGO}/${BASELOGO}_num_4.raw ./${BASELOGO}/${BASELOGO}_num_5.raw ./${BASELOGO}/${BASELOGO}_num_6.raw ./${BASELOGO}/${BASELOGO}_num_7.raw ./${BASELOGO}/${BASELOGO}_num_8.raw ./${BASELOGO}/${BASELOGO}_num_9.raw ./${BASELOGO}/${BASELOGO}_num_percent.raw ./${BASELOGO}/${BASELOGO}_bat_animation_01.raw ./${BASELOGO}/${BASELOGO}_bat_animation_02.raw ./${BASELOGO}/${BASELOGO}_bat_animation_03.raw ./${BASELOGO}/${BASELOGO}_bat_animation_04.raw ./${BASELOGO}/${BASELOGO}_bat_animation_05.raw ./${BASELOGO}/${BASELOGO}_bat_animation_06.raw ./${BASELOGO}/${BASELOGO}_bat_animation_07.raw ./${BASELOGO}/${BASELOGO}_bat_animation_08.raw ./${BASELOGO}/${BASELOGO}_bat_animation_09.raw ./${BASELOGO}/${BASELOGO}_bat_animation_10.raw ./${BASELOGO}/${BASELOGO}_bat_10_01.raw ./${BASELOGO}/${BASELOGO}_bat_10_02.raw ./${BASELOGO}/${BASELOGO}_bat_10_03.raw ./${BASELOGO}/${BASELOGO}_bat_10_04.raw ./${BASELOGO}/${BASELOGO}_bat_10_05.raw ./${BASELOGO}/${BASELOGO}_bat_10_06.raw ./${BASELOGO}/${BASELOGO}_bat_10_07.raw ./${BASELOGO}/${BASELOGO}_bat_10_08.raw ./${BASELOGO}/${BASELOGO}_bat_10_09.raw ./${BASELOGO}/${BASELOGO}_bat_10_10.raw ./${BASELOGO}/${BASELOGO}_bat_bg.raw ./${BASELOGO}/${BASELOGO}_bat_img.raw ./${BASELOGO}/${BASELOGO}_bat_100.raw ./${BASELOGO}/${BASELOGO}_kernel.raw ./${BASELOGO}/${BASELOGO}_kernel_clife.raw
./zpipe -l 9 ${BOOT_LOGO_RESOURCE} temp0.raw temp1.raw temp2.raw temp3.raw temp4.raw temp5.raw temp6.raw temp7.raw temp8.raw temp9.raw temp10.raw temp11.raw temp12.raw temp13.raw temp14.raw temp15.raw temp16.raw temp17.raw temp18.raw temp19.raw temp20.raw temp21.raw temp22.raw temp23.raw temp24.raw temp25.raw temp26.raw temp27.raw temp28.raw temp29.raw temp30.raw temp31.raw temp32.raw temp33.raw temp34.raw temp35.raw temp36.raw temp37.raw temp38.raw temp39.raw temp40.raw 
rm -rf ./temp0.raw ./temp1.raw ./temp2.raw ./temp3.raw ./temp4.raw ./temp5.raw ./temp6.raw ./temp7.raw ./temp8.raw ./temp9.raw ./temp10.raw ./temp11.raw ./temp12.raw ./temp13.raw ./temp14.raw ./temp15.raw ./temp16.raw ./temp17.raw ./temp18.raw ./temp19.raw ./temp20.raw ./temp21.raw ./temp22.raw ./temp23.raw ./temp24.raw ./temp25.raw ./temp26.raw ./temp27.raw ./temp28.raw ./temp29.raw ./temp30.raw ./temp31.raw ./temp32.raw ./temp33.raw ./temp34.raw ./temp35.raw ./temp36.raw ./temp37.raw ./temp38.raw ./temp39.raw ./temp40.raw ./bootlogo.raw 
echo "conversion finished"echo "=========done"# step 3 make logo.bin
echo "===================step 3 make logo.bin===================="
./mkimage ${BOOT_LOGO_RESOURCE} img_hdr_logo.cfg  > logo.bin
echo "all=========done"rm  ${BOOT_LOGO_RESOURCE} -rf

在这里插入图片描述
编译的时候,替换xunye文件夹中的xxxxxx_uboot.bmp,xxxxxx_kernel.bmp两个文件,即logo图片
./make_logo.sh xunye就行,生成的logo.bin放入sd卡中替换

总结

logo.bin没有修改,动态修改logo.bin,只是修改了系统app对logo分区的修改权限;
开机动画与开机音乐是加入到新分区中的,然后对新分区修改SE权限,和读写权限,让系统APP能够修改,同时该分区不随OTA升级,所以用户即使替换了,升级之后也没有变化;

http://www.yayakq.cn/news/684549/

相关文章:

  • 中小企业网站制作广州网络服务公司找赛合公司网页设计师岗位
  • 哪些网站做的最有特色wordpress 坐标
  • 网站建设规划方案ppt北京东城网站建设
  • 网站动效是代码做的吗如何自己建立网站建设
  • 国内flash网站国外网站怎样建设
  • 聊城建设银行网站电商网站设计风格
  • 农产品网站开发技术方案与设施如何设置中国建设银行网站
  • 做网站需要哪个专业成都 网站改版
  • 猎头可以做单的网站哪个网站做漫画可以有钱
  • 方城网站建设怎么注册手机wordpress
  • 网站建站 优化英文网站建设服务合同模板下载
  • 高端+旅游+网站建设免费图标下载网站
  • 建设电子商务网站总体设计阶段鼎湖网站建设公司
  • 网络推广网站公司推荐男直接做的视频网站
  • 什么网站可以做电影投资平面设计最常用的网站
  • 微信音乐做mp3下载网站电子工程师资格证
  • 做建材上哪个网站比较好专业培训大全
  • 王建设医生网站网站备案查询工信部app
  • 网站加速器免费永久怎样做公司的网站
  • 学校门户网站建设的好处怎么注册中视频账号
  • 如何做展示型网站国外WordPress主题速度慢
  • 网站建设及政务公开工作总结网站用access做数据库吗
  • 网站制作app软件个人网站的前途
  • 宣传工作网站建设作用企业网站建设研究
  • 类似返利网的网站建设网页设计html代码大全ppt
  • 无锡游戏网站建设公司专门做音箱的网站
  • 洛阳做网站公司在哪公司网站服务器优化
  • 做配电柜在哪个网站发布信息php网站后台管理系统源码
  • 做网站的论文摘要如何创建网站平台的详细步骤
  • 快三彩票网站建设深圳做网站比较