http://source.android.com/source/downloading.html

안드로이드 빌드를 위한 사전 작업을 마쳤다면 이제 안드로이드 소스코드를 받을 차례이다.
위의 링크에서 설명한대로 차례 차례 진행해 보도록 하자.


1. repo 설치


소스코드는 어디 홈페이지에서 받는 것이 아니라 repo라는 것의 도움받는다.

다음을 입력해 repo를 위한 폴더를 만들로 폴더를 PATH에 등록한다.

$ mkdir ~/bin

$ PATH=~/bin:$PATH


repo를 받고 실생 가능한 파일로 만들어 준다.

$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

$ chmod a+x ~/bin/repo


2. 안드로이드 소스코드 다운로드.


안드로이드를 위한 폴더를 만들어 주자.

$ mkdir Android_project

$ cd Android_project


repo를 이용해 source code를 받자.

$ repo init -u https://android.googlesource.com/platform/manifest


위와 같이 적용하니 다음과 같은 메세지가 나온다.

error.GitError: manifests var: 

*** Please tell me who you are.


Run


  git config --global user.email "you@example.com"

  git config --global user.name "Your Name"


to set your account's default identity.

Omit --global to set the identity only in this repository.


fatal: unable to auto-detect email address (got 'nold@nold-VB.(none)')


나의 email 주소를 모르겠단다.
저기 나와 있는 대로 명령어를 실행하고 다시한번 repo init을 하자.
$ git config --global user.email "you@example.com"
$ git config --global user.name "Your Name"
$ repo init -u https://android.googlesource.com/platform/manifest

https://android.googlesource.com/platform/manifest

여기에 들어가면 여러 버젼이 나온다. 나는 4.4.2_r2를 사용하기로 했으니 다음과 같이 입력한다.

$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.2_r2


이제 정말 소스를 받도록 하자.

$ repo sync


이것은 시간이 많이 걸린다. 가서 밥이나 먹고 오자



3. 디바이스를 위한 드라이버 다운로드


nexus5에 안드로이드를 올리기 위해서는 디바이스 드라이버도 필요하다.

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

위 페이지 중간부분에 

Picking and building the configuration that matches a device

밑에 드라이버 다운로드를 위한 링크가 있다.

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

여기에 들어가서 Binaries for Nexus 5 (GSM/LTE) ("hammerhead") 밑의 Android 4.4.2 (KOT49H)를 눌러보자.



위와 같이 장치 드라이버가 나온다. 

드라이버를 다운로드 받기 위한 폴더를 만들자.

$ mkdir ~/android_driver

$ cd ~/android_driver


드라이버를 wget을 이용해서 다운 받는다. 

각각의 Link에 대해 다음을 수행한다.

$ wget "Link 우클릭 -> 링크주소복사"


다음과 같은 세 개의 파일이 받아졌다.

broadcom-hammerhead-kot49h-a670ed75.tgz

qcom-hammerhead-kot49h-518133bf.tgz

lge-hammerhead-kot49h-e6165a67.tgz


이 파일들의 압축을 해제 하자.

$ tar zxvf broadcom-hammerhead-kot49h-a670ed75.tgz

$ tar zxvf qcom-hammerhead-kot49h-518133bf.tgz

$ tar zxvf lge-hammerhead-kot49h-e6165a67.tgz


다음과 같이 세개의 파일이 생겼다.

extract-qcom-hammerhead.sh

extract-broadcom-hammerhead.sh

extract-lge-hammerhead.sh



4. 장치 드라이버 설치


안드로이드 소스코드가 있는 곳으로 이동한다.

$ cd ~/android_4.4.2_r2


이 폴더에서 아까 받은 파일들을 실행한다.

$ ~/android_driver/extract-broadcom-hammerhead.sh


The license for this software will now be displayed.

You must agree to this license before using this software.


Press Enter to view the license


엔터를 입력하자.

   1.  Special Definitions


      a.  The term "Android" means the open source mobile platform, software

          stack, operating system, middleware, application programming

          interfaces and mobile applications under the trade-name "Android"

          distributed at Android.com.


      b.  The term "Android Applications" means a software application or

          open-source contribution developed by You, designed to operate with

          Android that does not contain or incorporate any of the Software.

--More--

위와 같이 나오는데 스페이스 바를 눌러 끝까지 진행한다.
      e.  Entire Agreement. This Agreement completely and exclusively states
          the agreement between You and Licensor regarding this subject
          matter.

Type "I ACCEPT" if you agree to the terms of the license:

커서가 깜빡 거리는 데, I ACCEPT를 입력하면 된다.
세 개의 파일 모두 같은 방식으로 진행한다.


5. 안드로이드의 타겟 설정

안드로이드 소스코드 폴더로 이동한다.
$ cd ~/android_4.4.2_r2

다음을 입력해 빌드를 위한 세팅을 한다.
$ . build/envsetup.sh

그리고 타겟을 설정하기 위해 다음을 입력한다.
$ lunch

You're building on Linux

Lunch menu... pick a combo:
     1. aosp_arm-eng
     2. aosp_x86-eng
     3. aosp_mips-eng
     4. vbox_x86-eng
     5. mini_mips-userdebug
     6. mini_armv7a_neon-userdebug
     7. mini_x86-userdebug
     8. aosp_mako-userdebug
     9. aosp_hammerhead-userdebug
     10. aosp_grouper-userdebug
     11. aosp_tilapia-userdebug
     12. aosp_deb-userdebug
     13. aosp_flo-userdebug
     14. aosp_manta-userdebug

Which would you like? [aosp_arm-eng] 

여기서 적당한 것을 입력하면 된다.
xxx_yyy-zzz 다음과 같은 형식인데, xxx는 소스코드의 형식이고, yyy는 안드로이드가 올라가는 타겟 디바이스이다. zzz는 안드로이드의 빌드 형식을 나타낸다.

nexus5는 hammerhead이고 개발자 입장에서 빌드를 할것이기 때문에 zzz는 eng를 선택한다.
 aosp_hammerhead-eng

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.4.2
TARGET_PRODUCT=aosp_hammerhead
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=krait
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=KVT49L
OUT_DIR=out
============================================

결과를 보면 많은 정보를 알 수 있다.

그리고 대망의 빌드를 하자. 이 또한 시간이 많이 걸린다.

$ make -j 2
뒤의 숫자는 자신의 코어 수 만큼만 주면 된다.

Checking build tools versions...
************************************************************
You are attempting to build with an unsupported JDK.
 
You use OpenJDK but only Sun/Oracle JDK is supported.
Please follow the machine setup instructions at
************************************************************
build/core/main.mk:152: *** stop.  Stop.
위와 같은 메세지를 뱉어 내고 죽어버렸다.
링크된 페이지에 가면 open JDK를 사용 하라고 나와 있는데.... sun/oracle의 JDK를 사용하라고 한다.

위 링크에서 sun/oracle jdk를 설치하는 방법을 설명해 놓았다.
설치 후 다시 한번 빌드 해보자.

$ make -j 2


'Android' 카테고리의 다른 글

android art 디버깅 하기 (dex2oat)  (0) 2015.02.03
nexus 5를 위한 Android 4.4 빌드하기 1. 빌드 환경 설정.  (0) 2014.07.08
android IP 확인  (0) 2014.05.19

+ Recent posts