最近需要修改系统开机画面,我按照网上说的制作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中的内容
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中的内容
我的android/out/target/product/generic/system路径下面没有media目录,是不是我的编译有问题,要怎样编译才会正常,正常的目录结构是怎么样的
这个是针对rom的或直接操作手机,与源码环境无关源码环境下未尝试过,期待楼主解决后分享。
只要在源码目录
./frameworks/base/core/res/assets/images
将对应的12张图片改了就行了。
而相应的代码文件就是楼主说的frameworks/base/cmds/bootanimation/BootAnimation.cpp
$(LOCAL_PATH)/bootanimation.zip:system/media/bootanimation.zip
就会把你的bootanimation.zip,bootanimation.MP3放到system/media/下面了。
如果这样子还不行,那么就需要看你打包的时候是否有问题,因为打包的时候不能带文件夹打包,必须在文件夹里面打包。