http://source.android.com/source/downloading.html
안드로이드 빌드를 위한 사전 작업을 마쳤다면 이제 안드로이드 소스코드를 받을 차례이다.
위의 링크에서 설명한대로 차례 차례 진행해 보도록 하자.
소스코드는 어디 홈페이지에서 받는 것이 아니라 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
안드로이드를 위한 폴더를 만들어 주자.
$ 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
이제 정말 소스를 받도록 하자.
이것은 시간이 많이 걸린다. 가서 밥이나 먹고 오자
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
안드로이드 소스코드가 있는 곳으로 이동한다.
이 폴더에서 아까 받은 파일들을 실행한다.
$ ~/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를 입력하면 된다.
세 개의 파일 모두 같은 방식으로 진행한다.
안드로이드 소스코드 폴더로 이동한다.
다음을 입력해 빌드를 위한 세팅을 한다.
그리고 타겟을 설정하기 위해 다음을 입력한다.
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를 선택한다.
============================================
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
============================================
결과를 보면 많은 정보를 알 수 있다.
그리고 대망의 빌드를 하자. 이 또한 시간이 많이 걸린다.
뒤의 숫자는 자신의 코어 수 만큼만 주면 된다.
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를 설치하는 방법을 설명해 놓았다.
설치 후 다시 한번 빌드 해보자.