2012년 10월 26일 금요일

방황 끝... 정말이지 멋진 자료 찾다.

성지

http://dalinaum-kr.tumblr.com/post/5904189950/android-make-lunch-or-lunch-make-or-whaever

http://www.iamroot.org/xe/27212


안드로이드 빌드하기

안드로이드 소스를 가져와서 빌드하는 일은 아는 사람에겐 매우 쉽고 모르는 사람에겐 어려운 일입니다. 구글이 repo라는 특이한 도구를 사용하고 있기 때문에 그렇습니다. repo는 구글이 만들었는데, 리누스 토발즈가 만든 DVCS Git을 응용하는 도구입니다. repo가 하는 일을 정리하면 다음과 같습니다.



복수개의 저장소(repository)에서 원하는 버전을 가져와서 지정된 디렉토리에 저장합니다.

예를 들어 platform/bionic.git은 ./bionic/에 저장됩니다.

어떤 저장소가 어떤 디렉토리에 저장될지는 platform/manifest.git에 있는 default.xml 파일 안에 약속이 되어 있습니다.

이 절차를 통해 우리는 빌드에 필요한 모든 파일트리를 얻게 됩니다.

우리가 브랜치를 만들어서 작업할 때 저장소 각각에 브랜치를 만들어서 관리를 해줍니다.

gingerbread 브랜치를 가져와서 saenggangbbang이라는 우리만의 버전을 만들 수 있습니다.

만약 160개가 넘는 저장소에 각각 브랜치를 만들어야 한다고 어떻게 하시겠습니까?

수정한 코드 묶음(패치)을 Android Review 사이트에 올려줍니다.

여러 저장소에서 딱 우리가 수정한 내용만을 묶어 구글에 전송하는 것입니다.

구글의 코드 리뷰와 질의를 통과하면 구글 안드로이드에 우리 코드를 추가할 수 있게 됩니다.

repo가 여러가지 용도로 사용될 수 있지만 이번에는 1번: 복수개의 저장소에서 원하는 버전을

가져오기에만 관심을 가지겠습니다. 우리는 안드로이드를 빌드만 해볼겁니다.



무엇보다 먼저 우리 지금 우분투 리눅스를 쓰고 있는 것이 맞죠? 그렇지 않다면 조금

어렵거나 짜증납니다. 적어도 가상머신에라도 우분투를 설치하시는 것을 추천합니다. 그 다음으로 repo를 구해야겠습니다.



cd /usr/local/bin

wget https://android.git.kernel.org/repo

chmod 755 repo

만약 실패했고 그걸 해결하지 못하셨다면, 안타깝지만 당신에게 지금 이 문서가 적합하지 않은 것 같습니다.

1 다른 공부를 하시는 것을 추천드립니다.



repo에서 사용할 명령어를 알려드리겠습니다.



repo init - repo를 초기화시키는 명령입니다.

repo sync - 최신 코드를 받아오는 명령입니다.

우리는 우선 repo init를 수행하여 초기화한 뒤 앞으로는 repo sync만을 사용할 것입니다. 2



초기화 하는 명령어를 2가지 알려드리겠습니다.



repo init -u git://android.git.kernel.org/platform/manifest.git -b android-2.3.4_r1

repo init -u git://android.git.kernel.org/platform/manifest.git -b gingerbread

1번은 안드로이드 2.3.4_r1 버전을 받겠다는 것이고 2번은 gingerbread의 최신 버전을 받겠다는

것입니다. 2011년 5월 28일 현재 최신 버전은 2.3.4_r1입니다. gingerbread 버전을 받으시면 현재

최신 코드이기 때문에 문제가 있을 수도 있습니다.

먼저 android-2.3.4_r1을 이용해서 2.3.4_r1 버전을 받는 것을 추천합니다.



옵션도 살펴봅시다. -u 옵션은 어떤 저장소에서 전체 소스트리를 가지고 있는 정보가

어느 저장소에 있는지를 알려주는 것입니다. manifest.git 저장소를 통해 전체 소스가 어디에 있고 우리의

어느 디렉토리에 설치해야하는지가 결정됩니다. -b 옵션은 어떤 버전을 선택할 것인지 입니다.

3 선택이 끝나면 이름과 이메일을 알려달라고 합니다. 이 절차에 대한 설명은 생략합니다.



다음으로 실행할 명령어는 이제 아시겠죠?



repo sync

코드를 받아오는데 2~4시간 걸릴겁니다.

컴퓨터가 고장난게 아니니깐 외출하고 오셔도 됩니다.

아니면 운동을 하셔도 됩니다. 몸짱이 되실 시간입니다.

4 만약 하드의 남은 용량이 10기가가 안된다면 에러날테니깐 그냥 컴퓨터 모니터 앞에 계시고요.



빌드에 앞서 설치할 패키지 들이 있습니다.



add-apt-repository "deb http://archive.canonical.com/ lucid partner"

add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"

apt-get update

apt-get install sun-java6-jdk

만약에 add-apt-repository가 없으면

apt-get install python-software-properties을 하십시요. 우분투 11버전에서는 없는 경우도 있습니다.



64비트 환경에서는 아래와 같이 입력해주세요.



apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev \

libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev \

lib32readline5-dev lib32z-dev libgl1-mesa-dev

32비트 환경이라면 아래처럼요.5



추천하지는 않습니다만…



apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev \

libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline5-dev \

libz-dev libgl1-mesa-dev

이제 빌드를 수행할 시간입니다. 환경 설정과 빌드가 필요합니다.



. build/envsetup.sh

lunch 1

make

머신에 따라 20분내지 한시간 반이 걸릴 겁니다. 만약에 램이 1기가 이하라면 실패할겁니다.

혹시 가상 머신을 쓰신다면 메모리 사용량을 올려주시고 아니라면 지금 용산에 가세요.

빌드가 끝났다면 에물레이터를 동작시킬 수 있습니다.



cd ~/android/out/target/product/generic

emulator -system system.img -data userdata.img -ramdisk ramdisk.img

에뮬레이터가 떴습니다. 이제 안드로이드의 빌드의 기본을 하신 겁니다.

그 다음은 해당 하드웨어에 대한 커뮤니티를 찾아 길을 확인하십시요.6





--------------------------------------------------------------------------------



이 문제를 어떻게 회피하더라도 다른 문제가 다가올 겁니다.

그 문제는 어떻게 하실 건가요? 사람에겐 누구나 시기가 있는 겁니다.

지금은 그 때가 아닌 것 같고요. 다음 번에 다시 찾아와주세요. ↩



물론 만약 다른 버전을 사용하거나 다른 디렉토리에 repo를 적용하기 위해 repo init를 사용할 수 도 있습니다. ↩



눈치가 빠르신 분은 -b를 보고 브랜치를 의미하는 것인 것을 아셨을 수도 있습니다.

repo의 도움말을 보아 눈치채신 분도 있겠고요. 그럼 gingerbread가 브랜치인 게 이해되는데

android-2.3.4_r1는 왜 태그가 아니라 브랜치인 것에 의문을 가질 수 있습니다.

repo 명령은 브랜치와 태그를 구별하지 않게 설계되었습니다.

하지만 개별 저장소에서 코드를 가져올 때는 gingerbread일 경우 브랜치에서 android-로 시작하는

애들은 태그에서 가져오니깐 걱정하지 않으셔도 됩니다.

그 이유를 아시고 싶으신 분은 manifest.git을 해당 브랜치로 가져와서 파일 내용을 확인해보시면 됩니다. ↩



전설로 전해져 오는 북미 몸짱 소프트웨어 회사 이야기가 있습니다.

빌드 시간이 너무 길어 고민하던 직원을 위해 회사가 헬스 머신을 비치했다는 겁니다.

그 결과 해당 프로젝트가 끝나고 참가자는 모두 몸짱이 되었다더군요. 구글은 우리를 위해 헬스 머신을 사진

않았지만 시간은 충분히 제공하고 있습니다. ↩



예전에 진저브레드를 받았을 때는 32비트 환경에선 진저브레드가 빌드되지 않았습니다. 2.3.4버전이 나온

지금은 빌드가 되는지 모르겠습니다.

구글이 저렇게 환경 설정을 추천한 만큼 빌드될 가능성은 있겠지만 테스트해보지 못해 장담할 수 없습니다. ↩



실제 하드웨어서 띄우고 싶다면 해당 하드웨어 커뮤니티를 찾아서 정보를 더 획득해야합니다.

커널, 부트로더, 안드로이드 빌드에 관련한 여러 이슈들이 있어 그것이 가능한지 방법이 무엇인

지를 나열하기란 어렵고 어쩌면 불가능한 일입니다. ↩



댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...