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

成都服务器租赁网站seo规划

成都服务器租赁,网站seo规划,win10做的网站其他电脑访问不了怎么办,建设网站要注意事项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.yidumall.com/news/29739.html

相关文章:

  • 快速做网站企业seo新人培训班
  • jsp做网站注册页面电商运营是做什么的
  • wordpress 手机商城模板win10优化大师怎么样
  • 商丘网站建设价格电脑清理优化大师
  • 深圳网站建设品牌推广软文营销案例
  • 东莞h5网站开发百度排行榜小说
  • 吉林系统建站怎么用360搜索优化
  • wordpress换域名服务器便宜的seo网络营销推广
  • 做网站页面遇到的问题站点搜索
  • 建程网土石方工程安徽seo网络优化师
  • 资生堂网站建设google搜索排名优化
  • 哈尔滨巨耀网站建设明星百度指数在线查询
  • h5模板网站有哪些seo做关键词怎么收费的
  • 运输网站建设成品网站建站空间
  • 公司网站设计收费班级优化大师
  • 网站建设南京十大教育培训机构排名
  • 网站提示建设中焦作网络推广哪家好
  • 网站绩效营销百度推广账号怎么注册
  • 网页创建站点seo百度站长工具
  • python做视频网站百度账号申诉中心
  • 中国免费素材网站seo推广灰色词
  • 国内疫情防控最新政策vue seo 优化方案
  • 美耐皿 技术支持 东莞网站建设自己怎么做网页推广
  • 微信的网站怎么做aso优化师
  • 深圳坪山网站建设网站页面优化方案
  • 房产网站开发功能手册百度seo运营工作内容
  • 高端网站制作效果好seo外链怎么做
  • 如何验证网站所有权网络营销具有哪些特点
  • 网站首页模块建设临沂做网站的公司
  • 网站开发面试自我介绍免费网站推广网站短视频