검색결과 리스트
글
안드로이드 프레임워크 프로그래밍(3) [NEXUS5에 소스 빌드하기]
지난 포스팅에서 안드로이드 소스코드를 다운 받은 후 이를 컴파일하는 방법에 대해 알아보았습니다. 이번 포스팅에서는 소스코드를 직접 기기에 빌드하는 과정에 대해 알아보도록 하겠습니다. 작업 환경은 다음과 같습니다.
안드로이드 기기 : LG NEXUS5
빌드 버전 : Android 4.4.4(r2)
컴퓨터 운영체제 : Ubuntu 12.04(64비트)
JDK Version : Oracle JDK 1.6
1. 자신의 안드로이드 기기에 빌드하고자 하는 안드로이드 소스코드를 다운로드 받습니다. 이 과정은 이전 포스팅을 통해 진행하실 수 있습니다.
본 포스팅에서 안드로이드 소스코드를 설치한 폴더는 아래와 같습니다.
~/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
빌드가 완료된 안드로이드 기기의 휴대전화 정보를 확인하시면 다음과 같이 자신이 설정한 버전과 빌드 정보들을 직접 확인하실 수 있습니다.
여기까지 진행하셨다면 여러분은 드디어 안드로이드 빌드에 입문하신 겁니다!
지금까지 잘 따라오신 분들께 진심으로 축하드립니다!
중간에 에러로 인해 결과가 좋지 못하신 분들도 좀 더 자세히 들여다 보신다면 성공하실 수 있을 것입니다.
'안드로이드 > 프레임워크' 카테고리의 다른 글
설정
트랙백
댓글
글
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so] error 1
안드로이드 커널을 다운로드한 후 열심히 빌드를 하다 보면 다음과 같은 문구가 발생합니다.
make: *** [out/target/product/generic/obj/SHARED_LIBRARIES/libwebviewchromium_intermediates/LINKED/libwebviewchromium.so] 오류 1
이 현상은 거의 대부분이 빌드를 하는 컴퓨터의 메모리 구성에서 문제가 발생해서 생기는 것으로 보고 있습니다. 이를 해결하기 위해 다음과 같은 사항을 확인합니다.
1. 메모리 용량이 얼마나 확보되어 있는지 확인합니다. 가상머신을 사용하시는 분의 경우 가상머신에 설정된 메모리 용량을 확인합니다.
2. 우분투를 설치하였을 때 스왑 용량을 확인합니다. 대개 기본 설정으로 설치시 스왑 영역이 약 1~2기가 사이로 설정되어 있습니다. 이 경우 자신의 컴퓨터의 메모리가 4기가 이하의 경우 컴파일이 진행되던 도중 메모리 부족으로 프로세스가 멋대로 종료되어 버리는 경우가 발생합니다. 이를 해결하기 위해서는 처음 설치시 부터 스왑 영역을 최대한 확보하거나 설치 디스크로 부팅을 한 후 파티션을 조절하여 스왑영역을 확보합니다.
위 사항대로 수정한다면 오류 없이 컴파일이 되는 것을 확인하실 수 있습니다.
You should have virtual memory less than 4GB. If you have the problem above, You should increase your memory size or linux-swap size.
'안드로이드 > 프레임워크' 카테고리의 다른 글
make: *** [out/target/common/obj/PACKAGING/checkapi-last-timestamp] error 38 (0) | 2015.01.18 |
---|---|
안드로이드 프레임워크 프로그래밍(3) [NEXUS5에 소스 빌드하기] (36) | 2015.01.17 |
안드로이드 프레임워크 프로그래밍(2) [안드로이드 커널 다운로드 및 컴파일] (0) | 2015.01.04 |
안드로이드 프레임워크 프로그래밍(1) [입문 및 동작환경 구축] (0) | 2015.01.03 |
안드로이드 Native(NDK) 소스를 간단하게 보는 방법 (2) | 2014.11.17 |
설정
트랙백
댓글
글
[도쿄 여행] 일본에서 볼 수 있는 킷캣 전문 매장 KitKat Chocolatory
일본의 가장 큰 매력중 하나를 말하자면 우리나라에서 보기 힘든 매장들이 많다는 점을 예를 들고 싶군요. 생각보다 다양한 분야를 전문으로 하는 매장들이 많기 때문에 이러한 가게들 자체가 큰 매력으로 느껴지기도 합니다.
도쿄 이케부쿠로에 위치한 킷캣 전문매장은 전 세계 최초로 오픈한 킷캣 전문 매장으로 시중에서는 볼 수 없는 이 곳에서만 판매되는 한정판 킷캣을 만나볼 수 있습니다.
KitKat Chocolatory는 세이부 백화점의 한 코너로서 입점한 매점입니다. 그렇기에 이름만 듣고 꾀 큰 매장일 것이라는 생각을 가지고 오신 분들이라면 조금은 의야해 하실 듯 합니다
매장 한쪽켠에서는 킷캣의 역사를 한 눈에 볼 수 있도록 잘 꾸며놓은 것을 보실 수 있습니다.
내부 장식은 킷캣 모형의 악세사리로 꾸며놓은 것이 상당히 독특해 보이는군요.
킷캣 매장에 도착한 시간은 오픈 시간인 10시에서 1시간을 약간 넘긴 11시 10분 즈음이었습니다만 벌써 매진된 상품이 보입니다. 생각보다 관광객들이 많이 찾아오므로 자신이 사고 싶은 종류의 킷캣이 있다면 매진에 신경쓰셔야 할 듯 보입니다.
저는 이 곳에서 오랜지맛 킷캣을 구매하였습니다.
킷캣 매장의 옆쪽을 바라본 사진입니다. 다른 가게들도 생각보다 많은 사람들로 인해 북적이는군요.
상당히 매력적인 모습을 하고 있는 킷캣 매장의 간판입니다.
일본의 경우 각 지역별로 다양한 맛의 킷캣들이 판매되고 있습니다. 녹차맛은 국내에서도 이색적인 맛의 킷캣으로 잘 알려져 있지요. 각 지역의 특산물로 만든 킷캣들은 물론이고 심지어는 와사비맛(!) 킷캣도 만들어지고 있습니다. 오직 일본에서만 팔기에 우리나라에서도 선물로서 상당히 큰 인기를 끌 만하다고 생각합니다.
우리나라에서도 언젠간 다양한 맛의 킷캣을 맛 볼 수 있는 날이 왔으면 좋겠습니다!!
※KitKat Chocolatory에 찾아가는 방법
이케부쿠로역과 연결되어 있으며 지하 1층 SEIBU 백화점 본점으로 찾아가시면 만나보실 수 있습니다.
영업시간 : 10:00 - 21:00 (휴일 20:00)
홈페이지 : http://nestle.jp/brand/kit/chocolatory/
전화번호 : 03-5949-2026
'좌충우돌 여행기 > 해외여행' 카테고리의 다른 글
실리콘벨리 탐방기록(3) - 산호세 뮤니시펄 로즈 가든[2015.07.01] (0) | 2015.07.11 |
---|---|
실리콘벨리 탐방기록(2) - 링크드인(LinkedIn) 방문기[2015.07.01] (2) | 2015.07.09 |
실리콘벨리 탐방기록(1) - Google 방문기[2015.06.30] (3) | 2015.07.08 |
[도쿄 여행] 에비스 생맥주를 맛볼 수 있는 야끼도리집(やき鳥とりちゃま) (0) | 2015.01.02 |
[도쿄 여행] GUEST HOUSE WASABI(게스트 하우스 와사비) (0) | 2015.01.01 |