이지랑드로랑 - 시즌2 - 1장 4편. 로고를 바꾸자! (안드로이드 Animation 로고 편)
어느덧 9월의 마지막 주간이 되었습니다.
벌써 1년의 3/4를 소모했다는 사실에 놀라울 뿐이고, 이지랑드로랑 진도는 이것밖에 안나갔다 하고 놀랄 뿐 입니다. ㅜ_ㅜ
안드로이드가 2.2가 나온 시점에 아직도 1.6을 가지고 강좌를 해서 불만인 분들도 많을 것이라고 사료됩니다.
2.2 강좌도 조만간 올리긴 할 건데요, 저희 회사에서 판매할 신형 보드를 기다리고 있어서 늦어지는거니까요, 그건 좀 기다려 주시구요, S3C6410 스팩으로도 무리없는 안드로이드 1.6을 가지고 하는 강좌, 너무 미워하지 마세요.
사실 머 많이 비슷한건 사실이니까요.
Step 1. Animation Logo 준비
제가 로고 수정하기 편에서 안드로이드 로고를 바꾸는데 총 4단계를 거칠 것이라고 말씀 드렸죠.
Bootloader Logo → Kernel Logo → Android Init Logo → Android Animation Logo
이렇게 4단계 중에서 총 3개의 로고를 바궈 봤고, 이제 마지막 남은 Android Animation Logo 만을 남겨두고 있죠.
[그림1-11. 기본 Android Animation Logo 의 모습]
위에 보이는 그림이 바로 Android Animation Logo 가 나타났을 때 모습 입니다.
이거 정적인 사진을 가지고 설명하려니까 참 알송달송 한데요, ANDROID 라는 글씨 보시면 색이 좀 이상하죠?
저게 밝은 이미지가 ANDROID 라는 마스크 형태의 이미지 뒤에서 움직이고 있는 것 입니다.
Init 과정이 끝나고 안드로이드 프레임워크가 읽혀지는 동안 안드로이드는 위 로고를 보여주는 것 인데요, 우리가 마지막으로 수정하고자 하는 로고가 바로 이 녀석이 되겠습니다.
Step 2. Animation Logo 의 구성
우리가 이번에 작업하고자 하는 이 Animation Logo 는 두개의 그림 파일로 되어 있고, 앞에서 작업 한 것들과 다르게 안드로이드에 이것을 담당하는 소스코드도 존재하고 있습니다.
먼저, 소스 코드를 살펴볼까요?
# vi {Android_SRC}/frameworks/base/cmds/bootanimation/BootAnimation.cpp
bool BootAnimation::android() { initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png"); // 메인 마스크 initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png"); // 뒤에서 흐르는 로고 … 생략 …
오픈한 소스코드에서 BootAnimation::android() 함수를 찾아봅시다.
보시면 android-logo-mask.png 파일과 android-logo-shine.png 파일을 읽어드리는 모습을 확인할 수 있습니다.
이 이미지들은 어떤 위치에 있을까요?
한번 찾아보시면...
# cd {Android_SRC} # find . -name android-logo-*.png ./frameworks/base/core/res/assets/images/android-logo-mask.png
./frameworks/base/core/res/assets/images/android-logo-shine.png
다음과 같은 결과를 얻을 수 있었습니다.
그림을 한번 볼까요?
[그림1-12. Animation Logo를 구성하는 두 PNG 이미지]
위 그림에서 보면 알겠듯이, 위에 있는 이미지가 android-logo-mask.png 이고 그 아래가 android-logo-shine.png 입니다.
마스크 그림에서 글자는 투명하게 되어 있는 것이죠. (PNG 이기 때문에 알파값이 존재)
그 두 이미지가 만나서 애니메이션 로고가 만들어 지는 것이죠.
자! 그럼 이제 우리가 무엇을 해야 하는지 알것 같죠?
두개의 PNG 이미지를 만들고, 그 PNG 파일에 맞게 소스를 수정한 다음에 안드로이드를 컴파일 하는 겁니다.
참 쉽죠? 한번 해 봅시다. ^^
Step 3. 로고 적용
우리가 계획했던 이미지, 즉 Init Logo 로 사용했던 이미지에서 ANDROID 라는 글자에 구멍을 빵! 뚫고 뒤에 흐르는 이미지를 알맞게 준비해주면 되겠습니다.
저는 ezrangdrorang-logo-mask.png 와 ezrangdrorang-logo-shine.png 파일을 만들었고, 두 파일을...
{Android_SRC}/frameworks/base/core/res/assets/images/
디렉토리 아래에 복사해 넣었습니다.
그리고 {Android_SRC}/frameworks/base/cmds/bootanimation/BootAnimation.cpp 파일을 그에 알맞게 수정했습니다.
수정을 마친 후 빌드!!!
빌드를 다 마치신 다음에는 만들어진 Root Filesystem에서 system 디렉토리 영역을 다시 복사해 줍니다.
{Android_SRC}/out/target/product/generic/system 디렉토리에 새롭게 빌드된 파일을 우리의 RootFS의 /system 디렉토리에 살포시 복사해주시면 이번 작업은 끝나게 됩니다.
[그림1-13. Animation Logo 파일이 잘 나타나는 모습]
드디어 잘 나오는군요!
이렇게 우리는 Bootloader Logo, Kernel Logo, Android Init Logo, Android Animation Logo 를 만들어 봤습니다.
어때요? 참 쉽죠? ^^
그럼, 이제 다음 강의는 무엇으로 준비할지 또 고민해 보도록 하고... 여러분 모두 해피개발~ ^^