最近需要修改系统开机画面,我按照网上说的制作bootanimation.zip包,然后放到system/media下面,然而问题来了,这个system/media路径是在哪里,我的只在android源码目录下有这个路径,但是我把bootanimation.zip包放到android/system/media目录下,重新编译,启动模拟器并不能看到我想要的开机动画,bootanimation.zip包没有读取到,然后再到网上找,说是要把bootanimation.zip包放在android/out/target/product/generic/system/media/目录下,但是我的android/out/target/product/generic/system目录下没有media这个文件夹,自己建了一个,然后把bootanimation.zip包放在里面,重启模拟器还是不能看到需要的动画,请问这是什么问题,要怎样编译才会有media目录frameworks/base/cmds/bootanimation/BootAnimation.cpp主要过程分析:
BootAnimation::readyToRun()
==> 程序会尝试打开/data/local/bootanimation.zip和/system/media/bootanimation.zip文件
如果2个文件都不存在,那么mAndroidAnimation将为true
    mAndroidAnimation = false;
    status_t err = mZip.open("/data/local/bootanimation.zip");
    if (err != NO_ERROR) {
        err = mZip.open("/system/media/bootanimation.zip");
        if (err != NO_ERROR) {
            mAndroidAnimation = true;
        }
    }于是最终将在下面threadLoop()函数中
BootAnimation::threadLoop()
    if (mAndroidAnimation) {
        r = Android(); // 执行android字体闪动的图片
    } else {
        r = movie(); // 执行bootanimation.zip中提供的动画图片
    }
==> BootAnimation::Android()会加载"images/android-logo-mask.png"和"images/android-logo-shine.png"
==> BootAnimation::movie()会加载bootanimation.zip中的内容

解决方案 »

  1.   

    如果zip没加载到,那mAndroidAnimation 是false,这样threadLoop里会执行movie,可以zip根本就没加载到,执行了肯定没效果。
      

  2.   

    我的问题是bootanimation.zip包的应该放在什么路径下才能被加载到,请写全路径。
    我的android/out/target/product/generic/system路径下面没有media目录,是不是我的编译有问题,要怎样编译才会正常,正常的目录结构是怎么样的
      

  3.   

    system/media路径,在模拟器上有,你打开FileExplorer,就能看见system文件夹了。
      

  4.   

    /system/media
    这个是针对rom的或直接操作手机,与源码环境无关源码环境下未尝试过,期待楼主解决后分享。
      

  5.   

    如果我想把这个修改后的系统移植到硬件上,我是需要在源码里面改,还是在out里面改就可以了
      

  6.   

    修改了文件重新生成img就行。就在out里改
      

  7.   

    哪位大侠编译过android2.3源码,可以把out/target/product/generic/system的目录结构贴出来吗,谢谢了
      

  8.   

    终于找到解决办法了,bootanimation.zip加载不到的原因居然是:bootanimation.zip在windows下面压缩的时候,这个文件自带了可执行权限,把bootanimation.zip的权限改为:rw-r--r-- 就可以了
      

  9.   

    改开机动画没有那么麻烦
    只要在源码目录
    ./frameworks/base/core/res/assets/images
    将对应的12张图片改了就行了。
    而相应的代码文件就是楼主说的frameworks/base/cmds/bootanimation/BootAnimation.cpp

      

  10.   

    在frameworks\base\data\sounds文件夹里面添加你的bootanimation.zip和你的开机音乐bootanimation.MP3,重要的操作在于修改Android.mk,需要在里面添加$(LOCAL_PATH)/bootanimation.mp3:system/media/bootanimation.mp3 \
    $(LOCAL_PATH)/bootanimation.zip:system/media/bootanimation.zip
    就会把你的bootanimation.zip,bootanimation.MP3放到system/media/下面了。
    如果这样子还不行,那么就需要看你打包的时候是否有问题,因为打包的时候不能带文件夹打包,必须在文件夹里面打包。