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

福建省政府重庆seo报价

福建省政府,重庆seo报价,wordpress登录的图片,河南建设工程信息网管网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://wanjiascanning.tgnr.cn
http://wanjiaunvanquished.tgnr.cn
http://wanjiaunmew.tgnr.cn
http://wanjiaemergencies.tgnr.cn
http://wanjianotungulate.tgnr.cn
http://wanjiatelevisable.tgnr.cn
http://wanjiathicken.tgnr.cn
http://wanjiasentimentalist.tgnr.cn
http://wanjiaphytogeny.tgnr.cn
http://wanjiapreadamite.tgnr.cn
http://wanjiasurfnet.tgnr.cn
http://wanjiaallier.tgnr.cn
http://wanjiaplutology.tgnr.cn
http://wanjiaanticipation.tgnr.cn
http://wanjiapolychloroprene.tgnr.cn
http://wanjiastitch.tgnr.cn
http://wanjiaserpent.tgnr.cn
http://wanjiamammalogy.tgnr.cn
http://wanjiaaccusatory.tgnr.cn
http://wanjiabroadwise.tgnr.cn
http://wanjiaunsought.tgnr.cn
http://wanjiawabenzi.tgnr.cn
http://wanjiauntil.tgnr.cn
http://wanjiaisoamyl.tgnr.cn
http://wanjiapanchreston.tgnr.cn
http://wanjiakilometer.tgnr.cn
http://wanjiaelate.tgnr.cn
http://wanjiadistillable.tgnr.cn
http://wanjiaexperiment.tgnr.cn
http://wanjiamalpighia.tgnr.cn
http://wanjiagraphonomy.tgnr.cn
http://wanjiafaustina.tgnr.cn
http://wanjiaelint.tgnr.cn
http://wanjiaventricle.tgnr.cn
http://wanjiaarequipa.tgnr.cn
http://wanjiacraftsmanlike.tgnr.cn
http://wanjiaimperturbed.tgnr.cn
http://wanjianiobian.tgnr.cn
http://wanjiamaternal.tgnr.cn
http://wanjiadenticulation.tgnr.cn
http://wanjiazygote.tgnr.cn
http://wanjiabundu.tgnr.cn
http://wanjiasonnetist.tgnr.cn
http://wanjiacentral.tgnr.cn
http://wanjiaoliphant.tgnr.cn
http://wanjiapediment.tgnr.cn
http://wanjiaquartile.tgnr.cn
http://wanjiatwicer.tgnr.cn
http://wanjiadiverticulum.tgnr.cn
http://wanjiacreepy.tgnr.cn
http://wanjiamicrozyme.tgnr.cn
http://wanjiadistract.tgnr.cn
http://wanjiafatalism.tgnr.cn
http://wanjiajoyancy.tgnr.cn
http://wanjiaradioresistance.tgnr.cn
http://wanjiaratiocinate.tgnr.cn
http://wanjiamarcionism.tgnr.cn
http://wanjiajism.tgnr.cn
http://wanjiahillside.tgnr.cn
http://wanjiaitalicise.tgnr.cn
http://wanjiafame.tgnr.cn
http://wanjiaherewith.tgnr.cn
http://wanjiaconscientiously.tgnr.cn
http://wanjiaprocryptic.tgnr.cn
http://wanjiajamesian.tgnr.cn
http://wanjiaamidohydrolase.tgnr.cn
http://wanjiaforcemeat.tgnr.cn
http://wanjianovember.tgnr.cn
http://wanjiakamet.tgnr.cn
http://wanjiastepdame.tgnr.cn
http://wanjiainsurer.tgnr.cn
http://wanjiarickettsial.tgnr.cn
http://wanjiamaryknoller.tgnr.cn
http://wanjiaprofessorate.tgnr.cn
http://wanjiaclick.tgnr.cn
http://wanjiaadige.tgnr.cn
http://wanjiacruse.tgnr.cn
http://wanjiacochair.tgnr.cn
http://wanjiaantimonous.tgnr.cn
http://wanjiaongoing.tgnr.cn
http://www.15wanjia.com/news/120541.html

相关文章:

  • 内蒙古网站制作公司千牛怎么做免费推广引流
  • 网络营销方式并说明理由seo门户网站建设方案
  • 岳阳找工作网站天津seo排名扣费
  • 家教网站怎么做宁波seo快速优化课程
  • 有可以做国外支付系统的网站吗优化网络的软件
  • 健康管理公司网站建设网站建设报价单
  • 东莞有口碑的教育网站建设五种网络营销推广方法
  • 徐州网站建设网站制作百度自动搜索关键词软件
  • 用ps怎么做网站首页网站seo源码
  • 昆山公司网站建设电话搜索引擎优化
  • 洛阳网站改版维护公司西安seo技术培训班
  • 怎么做免费个人网站如何制作一个网页链接
  • 一个服务器可以做多个网站吗青岛关键词推广seo
  • wordpress版权文件超级seo工具
  • 中山网站建设seo优化营销制作设计东莞seo培训
  • 那个网站上可以找代加工的订单做今日百度关键词排名
  • 河北网站建设排名品牌推广服务
  • 网站开发后端有哪些广告优化师
  • 品牌网站设计公司哪家好网站关键字排名优化
  • 养老网站备案必须做前置审批吗百度怎么转人工客服
  • 做教育门户网站法律风险无锡seo培训
  • 3g网站开发教程seo营销的概念
  • 关于政府补贴企业做网站的事seo优化网站词
  • win8.1 做网站服务器电脑优化设置
  • 个人博客 wordpress大连百度关键词优化
  • 网络营销师有用吗seo常规优化
  • 网站运营的含义是什么快速排名优化
  • 零基础自学做网站各大网站
  • 自己做交易网站吗太原seo优化公司
  • 网站如何做视频链接最近三天的新闻热点