이지랑드로랑 - 시즌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 를 만들어 봤습니다.

어때요? 참 쉽죠? ^^

그럼, 이제 다음 강의는 무엇으로 준비할지 또 고민해 보도록 하고... 여러분 모두 해피개발~ ^^