ubuntu 11.04 (내가 제일 좋아하는 ubuntu 버전)에서 android gingerbread(진저브레드) 소스 컴파일에 대한 정보이다.
인터넷에서 검색하면 예전 버전들이 많았다. git repository 위치도 달라서 그냥 다 될 것이라는 기대는 하면 안된다. 공식싸이트(http://source.android.com/source/downloading.html)가 그나마 가장 신뢰해야한다는 생각을 다시 하게 되었다.
구글에 올라온 정보가 약간 틀려서, 조금 수정했다.
$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk
$ sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev ant gcc-multilib g++-multilib
$ mkdir ~/bin
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$mkdir my-android
$ cd my-android
나는 진저 브레드 브랜치로 다운받음
$ ~/bin/repo init -u https://android.googlesource.com/platform/manifest -b gingerbread
($ ~/bin/repo init -u https://android.googlesource.com/platform/manifest 이렇게 해서 받을 수도 있지만,
$ ~/bin/repo sync
check out 받는 거라 시간이 많이 소요됨
$ source build/envsetup.sh
$ lunch full-eng
빌드과정이라 시간이 많이 소요됨. 4cpu를 다쓸 수 있게 설정함.
$ make -j4
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=2.3.7
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
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=GINGERBREAD
============================================
디폴트는 타겟이 arm 기반이라서 안드로이드를 ubuntu에서 돌릴 수 없으나, 잘 바꾸면 돌아갈 수도 있을 것 같다.
디폴트는 타겟이 arm 기반이라서 안드로이드를 ubuntu에서 돌릴 수 없으나, 잘 바꾸면 돌아갈 수도 있을 것 같다.
ramdisk.img, system.img, userdata.img 파일이 빌드 결과물에 있다.
ramdisk.img 는 개발할때 root fs를 ram에서 실행하기 위해서 필요하다.
system.img는 안드로이드 플랫폼용 이미지이다.
userdata.img는 임베디드 어플단 이미지이다.
이렇게 이미지를 나누어서 flash에 구워진다.
이외, root.img가 만들 수 있는데. 이는 root 디렉토리를 이미지화한 것으로 '/'를 의미한다. 즉 부팅에 대한 초기화 내용이 들어가 있다.
시스템에서는 root/init.rc에 정보를 읽을 것이다.
/system 은 system.img, /data는 userdata.img, 나머지 /는 root.img 을 의미한다.
그래서 안드로이드 파일 시스템 구조는 이렇게 구성이 된다.
(http://blog.naver.com/PostView.nhn?blogId=limpe&logNo=20115813026&redirect=Dlog&widgetTypeCall=true 그림만 참조)
재미있는 것은 root/init.goldfish.rc 파일도 볼 수 있는데, 이는 가상의 하드웨어의 이름이다. init.xxx.rc 파일은 하드웨어 vendor에 따른 초기화를 의미한다 .
arm9기반에서 동작되는 것처럼 지원하는 초기화 이름을 goldfish 라고 해서 사용되고 있는데, 이 파일이 init.goldfish.rc 파일이다.
'안드로이드-iOS-Webkit' 카테고리의 다른 글
안드로이드 컴파일 (ubuntu 11.04 + android 4.01) (0) | 2011.11.16 |
---|---|
android를 x86 (pc)에서 돌려보기 (0) | 2011.11.10 |
삼성 핸드폰 안드로이드 소스 받기 (1) | 2011.11.09 |
Intel ADF 2011 컨퍼런스에서 나온 얘기들 (0) | 2011.09.20 |
모토로이-안드로이드 개발 환경 셋팅 이클립스 셋팅 (0) | 2011.08.04 |