안드로이드를 개발하기 위해 반드시 거쳐야하는 과정, 컴파일 방법에 대해서 기술한다.
여기서 언급하는 내용은 http://source.android.com/source/initializing.html 를 참고했다.

안드로이드 소개

안드로이드는 그 어떤 프레임워크 보다도 짧은 주기로 업데이트되어 왔다.

안드로이드 버전 코드 명칭(출시일) 특징
1.0 2008.9.23 최초의 안드로이드 버전, SDK 함께 배포
1.1 2009.2.9 마켓지원, 뷰의 패딩 개선, 새로운 권한 추가
1.5 Cupcake(2009.4.30) 리눅스 커널 2.6.27 기반, 안드로이드 최초 정식버전(홈 화면에 띄울 수 있는 위젯과 폴더, 동영상 녹화와 재생, 유튜브로의 비디오 업로드 및 피카사로의 그림 업로드, 한글지원)
1.6 Donut(2009.9.15) 리눅스 커널 2.6.29 기반(마켓 리뉴얼, 카메라 및 캠코더등의 인터페이스 탑재, 다양한 스크린 사이즈 지원(QVGA, WVGA), CDMA 지원시작, 제스처 인식 기능과 API 추가, text-to-speech 엔진 추가, 통합 검색 기능 추가, 배터리 사용 상태 표시기)
2.0/2.1 Eclair(2009.10.26/2010.1.12) 리눅스 커널 2.6.29 기반, 멀티터치, 블루투스 2.1 지원, 하드웨어 최적화 진행, 인터넷 브라우저 상단 주소 창 추가, HTML5, 라이브 월페이퍼 지원, 구글 다중 계정 등록 사용 가능, MS Exchange 계정 사용 가능
2.2 Froyo(2010.5.20) 리눅스 커널 2.6.32 기반, 안드로이드 OS 의 속도, 메모리, 성능 최적화(배터리타임 성능개선, 어도비 플래시 10.1 지원, 모바일 Wi-Fi 핫스팟 등 테더링 기능을 지원, 외장메모리에 앱 설치 가능)
2.3 Gingerbread(2010.12.6) 리눅스 커널 2.6.35 기반, 인터넷 접속을 통한 OS 업데이트, 인터넷 전화 바로 사용 가능, 전면 카메라 공식지원, 구글맵 5.0, 자이로센서, NFC 등 지원
3.0/3.1 Honeycomb(2011.2.24/2011.5.10) 리눅스 커널 2.6.36 기반(태플릿 PC 전용, 홀로그래픽 UI, USB 기기 지원)
4.0 Icecream sandwitch(2011.10.19) 리눅스 커널 3.0.1 기반(태블릿 PC 와 스마트폰 공용 OS)
4.1 Jelly Bean(2012.6.28) 리눅스 커널 3.0.31 기반(터치스크린 반응성 개선, HTML5 와 자바스크립트 성능이 향상된 웹브라우저

준비운동 하기

안드로이드 최신버전(4.x)를 다운로드 받아 컴파일하는 과정을 거칠 텐데, 그전에 유의해야 할 점이 있다.

'The source download is approximately 8.5GB in size. You will need over 30GB free to complete a single build, and up to 100GB (or more) for a full set of builds.'

나의 경우, 노트북의 한정된 용량 때문에 외장 하드(80G)를 사용했다. 또한 컴파일 시간도 오래 걸리기 때문에 어느 정도 감수해야 한다. 물론 호스트 CPU 에 따라 가변적이긴 하다. 빌드 환경은 다음과 같다.

H/W IBM X40, HDD(40G)
S/W Debian 6.0, Kernel 3.6.7

만일 가상머신을 사용한다면 아래 문장을 유의하도록 한다.

'It is also possible to build Android in a virtual machine. If you are running Linux in a virtual machine, you will need at least 16GB of RAM/swap and 30GB or more of disk space in order to build the Android tree.'

안드로이드를 빌드하기 위해 사전에 필요한 소프트웨어가 설치되어야 한다.

  1. Python 2.5 – 2.7, which you can download from python.org.
  2. GNU Make 3.81 – 3.82, which you can download from gnu.org,
  3. JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older. You can download both from java.sun.com. 여기서는 JDK6 을 사용했다.
  4. Git 1.7 or newer. You can find it at git-scm.com.

기본 소스리스트로는 JDK 를 설치할 수 없다. 아래와 같이 /etc/apt/sources.list 에 추가한다.

deb http://ftp.pl.debian.org/debian/ squeeze non-free

이제 설치하자.

#apt-get update
#apt-get install sun-java6-jdk

데비안이 아닌 우분투를 사용한 경우라면, 위의 방법으로 jdk 를 설치할 수 없다. 이런 경우, 아래와 같이 관련 패키지들을 설치해야 한다.

#apt-get install git-core gnupg flex bison gperf build-essential \
  zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
  libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
  libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos \
  python-markdown libxml2-utils xsltproc zlib1g-dev:i386

다운로드

안드로이드 소스코드를 다운받기 위해 환경설정이 필요하다.

#mkdir ~/bin
#PATH=~/bin:$PATH
#curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo           // curl 이 없다면 설치한다
#chmod a+x ~/bin/repo

이제 다운 받을 곳을 지정하여 디렉토리를 만든다. 다시 말하지만, 용량을 고려해야 한다. 여기서는 /mnt 로 한다.

#mkdir /mnt/android
#cd /mnt/android
#repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1           // 4.0.1 브랜치를 다운로드 받는다
#repo sync

네트워크 속도에 따라 장시간이 소요될 수 있다.

컴파일

컴파일 하기 위해 환경설정 파일을 읽어들인다.

#source build/envsetup.sh
#lunch full-eng
#make

이 역시, 장시간이 소요된다.

에뮬레이터 실행하기

안드로이드에서는 실제 타겟보드에 올리기 전에 동작을 확인할 수 있도록 에뮬레이터를 제공한다.

#cd /mnt/android
#source build/envsetup.sh
#lunch
 
You're building on Linux
 
Lunch menu... pick a combo:
     1. full-eng
     2. full_x86-eng
     3. vbox_x86-eng
     4. full_maguro-userdebug
     5. full_tuna-userdebug
     6. full_panda-eng
 
Which would you like? [full-eng] 1         // 1번 선택
 
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.0.1
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=ITL41D
============================================

에뮬레이터 실행을 위한 환경 설정이 끝났다. 이제 실행하자.

#cd /mnt/android/out/target/product/generic
#emulator –system system.img –data userdata.img
  • computer/embedded/안드로이드_핵심가이드_-_1.시작하기.txt
  • Last modified: 4 years ago
  • by likewind