안드로이드 프레임워크 프로그래밍(3) [NEXUS5에 소스 빌드하기]

안드로이드/프레임워크 2015. 1. 17. 23:45

 지난 포스팅에서 안드로이드 소스코드를 다운 받은 후 이를 컴파일하는 방법에 대해 알아보았습니다. 이번 포스팅에서는 소스코드를 직접 기기에 빌드하는 과정에 대해 알아보도록 하겠습니다. 작업 환경은 다음과 같습니다.


안드로이드 기기    : LG NEXUS5

빌드 버전               : Android 4.4.4(r2)

컴퓨터 운영체제    : Ubuntu 12.04(64비트)

JDK Version        : Oracle JDK 1.6


1. 자신의 안드로이드 기기에 빌드하고자 하는 안드로이드 소스코드를 다운로드 받습니다. 이 과정은 이전 포스팅을 통해 진행하실 수 있습니다.

http://elecs.tistory.com/56

본 포스팅에서 안드로이드 소스코드를 설치한 폴더는 아래와 같습니다.

~/kitkat


2. 다운로드가 완료되었다면 소스코드 빌드 환경을 초기화 합니다.

$ cd ~/kitkat

$ source build/envsetup.sh


3. 빌드 모드를 설정합니다.

$ lunch


 위에서 보시는 바와 같이 자신의 안드로이드 기기에 올리기 위한 빌드 종류를 선택해야 합니다. 다음 페이지를 참고하시면 자신의 기기에 맞는 종류를 확인하실 수 있습니다.

https://source.android.com/source/building-devices.html




 위의 사이트를 통하여 Nexus 5의 경우 aosp_hammerhead-userdebug를 사용함을 알 수 있습니다. 이를 설정하신 후 다음 단계로 넘어가시면 되겠습니다.


4. 다음으로 기기에 빌드를 하기 위해서는 해당 기기의 Binary와 Factory Image를 소스코드 폴더에 설치해야 합니다.


Binary 다운받기

https://developers.google.com/android/nexus/drivers



 자신의 기기에 해당되는 Binary를 모두 다운로드 받습니다.


Factory Image 다운받기

https://developers.google.com/android/nexus/images



 우리는 현재 4.4.4 r2를 사용하고 있으므로 해당 버전을 선택하여 다운로드 받습니다. 다운로드 받은 압축파일들의 압축을 모두 해제하신 후 해제된 파일들을 자신의 안드로이드 소스코드 폴더 상단에 다음과 같이 이동해 주시면 되겠습니다.



 5. 각 .sh 파일을 실행하여 파일을 설치합니다. 설치를 하기 위해서는 라이센스에 동의를 해야 하는데 이 과정이 살짝 골치 아픕니다.



 각 sh 파일을 실행하시면 보시는 바와 같이 라이센스 내용들이 출력됩니다. 이를 모두 읽고 동의한다만 하면 되겠지만 이 긴 글들을 일일히 읽기 귀찮아서 Enter 키를 계속 누르고 있으면 설치가 취소되는 비극(!)이 벌어집니다. 조금은 귀찮더라도 엔터키를 천천히 누르면서 동의 여부 확인이 나올 때까지 기다립니다.


동의문을 모두 읽게 되면 다음과 같이 동의 여부를 묻는 커맨드가 나옵니다. 여기서 무심코 Enter 버튼을 누르게 되면 처음부터 다시 해야 하므로 다음 커멘드가 나오면 잠시 동작을 멈춘 후 "I ACCEPT"를 입력합니다. 그러면 sh 파일이 설치되는 광경을 확인하실 수 있습니다. 다음과 같은 과정을 나머지 sh파일에서도 진행합니다.


6. 이제 빌드 조건은 모두 구축되었습니다. Make를 실행하여 본격적으로 Build 작업에 들어갑니다.


$ make update-api

$ make -j2


※make 진행시 상당히 많은 시간을 소모합니다. 만약 자신이 사용하고 있는 컴퓨터가 멀티코어를 지원할 경우 해당 코어의 갯수만큼의 옵션을 설정하시면 보다 빠르게 컴파일을 진행하실 수 있습니다. 만약 자신의 컴퓨터가 쿼드코어의 경우 다음과 같이 진행하실 수 있습니다.


$ make update-api

$ make -j4


※종종 위의 컴파일 옵션의 숫자를 너무 크게 하면 컴파일이 진행되는 도중 오류가 생기는 경우가 종종 발생합니다. 가장 안정적인 컴파일을 원하시는 분의 경우 어떠한 옵션을 설정하지 마시고 컴파일을 진행합니다.


컴파일을 무사히 끝마치실 경우 다음과 같은 화면을 보실 수 있습니다.




7. 이제 빌드한 소스코드를 안드로이드 기기에 적용해 보도록 하겠습니다. 우선 자신의 기기가 Fastboot 모드에 진입한 상태로 컴퓨터와 USB로 연결되어야 합니다. 자신이 가지고 있는 안드로이드 기기의 Fastboot 모드 진입 방법은 기기를 제공하는 회사의 웹사이트를 확인하시거나 검색 등을 통해 확인하실 수 있습니다. Nexus 5의 경우 왼쪽 음량조절 버튼의 아래버튼 + 전원버튼을 계속 누르고 있으면 Fastboot 모드에 진입하실 수 있습니다.



위에 붉은 네모로 표시한 부분을 누르시면 됩니다.

8. 위와 같은 화면이 나온다면 Fastboot 모드에 진입이 성공한 것입니다. 이제 다시 Ubuntu의 Terminal을 켜신 후 root 모드로 접근합니다.


$ su root


위의 커맨드를 입력하시면 root의 비밀번호를 묻습니다. 초기 비밀번호는 자신의 Ubuntu 로그인 아이디 혹은 0000으로 설정되어 있습니다. root 권한을 획득하셨다면 다음으로 bashrc를 수정합니다.


# vi ~/.bashrc


다음 내용을 추가합니다.


export ANDROID_TOOLS=(자신의 안드로이드 소스코드 폴더)/out/host/linux-x86
export PATH=$ANDROID_TOOLS/bin:$JAVA_HOME/bin:$PATH
export ANDROID_PRODUCT_OUT=(자신의 안드로이드 소스코드 폴더)/out/target/product/(자신의 빌드 환경)


:wq 를 입력하신 후 저장 합니다.


9. bashrc를 바로 적용합니다.


#source ~/.bashrc


10. 기기가 제대로 연결되었는지 확인합니다.


#fastboot devices



위에서 보시는 바와 같은 상황이 나온다면 안도르이드 기기가 성공적으로 연결된 것입니다. 이제 기기에 빌드를 시도해봅니다.


#fastboot oem unlock

#fastboot flashall



빌드가 완료된 안드로이드 기기의 휴대전화 정보를 확인하시면 다음과 같이 자신이 설정한 버전과 빌드 정보들을 직접 확인하실 수 있습니다.


여기까지 진행하셨다면 여러분은 드디어 안드로이드 빌드에 입문하신 겁니다!

지금까지 잘 따라오신 분들께 진심으로 축하드립니다!

중간에 에러로 인해 결과가 좋지 못하신 분들도 좀 더 자세히 들여다 보신다면 성공하실 수 있을 것입니다.




300x250