본문 바로가기

Android/Kernel

안드로이드 커널 개발 및 빌드 환경 설정 - 1

안드로이드 커널 개발 및 빌드 환경 설정 - 1


안드로이드 KitKat(4.4.4_r1) 플랫폼 개발을 직접 하면서 정리한 개발 환경 설정 방법입니다.

커널 개발 및 빌드 답게 굉장히 까다롭고 민감하므로 주의하면서 이 글을 읽어주시기 바랍니다!





Step 0> 권장 사양 확인 & Keep in mind



개발 및 빌드하면서 속터지지 않기 귀한 권장 사양입니다.


  • 쿼드코어 이상의 CPU
  • 8GB이상의 램
  • 우분투64bit (12.04이후 모두 가능)
  • 80GB이상의 여유 저장공간 (SSD를 사용한다면 속도향상이 꽤 됩니다)


툭하면 프로그램이 없다고 명령이 막힐 수 있습니다.

당황하지 마시고 에러 메시지에 나타난 필요 프로그램을  sudo apt-get install 프로그램명   으로 설치해 주세요

진행 중 선택지가 나오면, 즉 y/n이 나오면 다 y 해주시면 됩니다.


녹색 글자는 터미널(Ctrl+Alt+T를 누르면 나타납니다)에 입력할 명령입니다.

마지막 스텝까지 한번 켠 터미널을 끄지 마시고 쭉 이어나가길 바랍니다.



Step 1> Ubuntu 14.04 64bit 설치



우분투 14.04 64bit를 컴퓨터에 설치하는 것은 구글링을 통해 쉽게 알 수 있으니 주의사항만 적겠습니다.

  • 반드시 64bit 버전을 설치할 것
  • 12.04 이후의 버전을 사용할 것
  • Swap 영역을 16GB이상으로 할 것(권장입니다. 필수는 아닙니다.)




Step 2> 각종 프로그램 설치 및 환경 설정



1. Oracle JDK 6 설치 (진저브레드~킷캣 개발은 반드시 Oracle JDK 6를 사용해야 합니다)

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java6-installer


2. 각종 툴 설치 (복사 붙여넣기 하시면 됩니다)


sudo apt-get install git 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 tofrodos \

  python-markdown libxml2-utils xsltproc zlib1g-dev:i386




sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so




Step 3> USB 설정



sudo touch /etc/udev/rules.d/51-android.rules

sudo gedit /etc/udev/rules.d/51-android.rules


GEdit프로그램이 열렀을 것입니다,

이제 아래의 내용을 복붙하고 Ctrl+H키를 눌러 변경창을 열어 <username> 을 유저 아이디로 치환합니다


# adb protocol on passion (Nexus One)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12", MODE="0600", OWNER="<username>"

# fastboot protocol on passion (Nexus One)

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff", MODE="0600", OWNER="<username>"

# adb protocol on crespo/crespo4g (Nexus S)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22", MODE="0600", OWNER="<username>"

# fastboot protocol on crespo/crespo4g (Nexus S)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20", MODE="0600", OWNER="<username>"

# adb protocol on stingray/wingray (Xoom)

SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="70a9", MODE="0600", OWNER="<username>"

# fastboot protocol on stingray/wingray (Xoom)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="708c", MODE="0600", OWNER="<username>"

# adb protocol on maguro/toro (Galaxy Nexus)

SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="<username>"

# fastboot protocol on maguro/toro (Galaxy Nexus)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER="<username>"

# adb protocol on panda (PandaBoard)

SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d101", MODE="0600", OWNER="<username>"

# adb protocol on panda (PandaBoard ES)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d002", MODE="0600", OWNER="<username>"

# fastboot protocol on panda (PandaBoard)

SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", OWNER="<username>"

# usbboot protocol on panda (PandaBoard)

SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d00f", MODE="0600", OWNER="<username>"

# usbboot protocol on panda (PandaBoard ES)

SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d010", MODE="0600", OWNER="<username>"

# adb protocol on grouper/tilapia (Nexus 7)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e42", MODE="0600", OWNER="<username>"

# fastboot protocol on grouper/tilapia (Nexus 7)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e40", MODE="0600", OWNER="<username>"

# adb protocol on manta (Nexus 10)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee2", MODE="0600", OWNER="<username>"

# fastboot protocol on manta (Nexus 10)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee0", MODE="0600", OWNER="<username>"




Step 4> Repo 설치



mkdir ~/bin

PATH=~/bin:$PATH

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

chmod a+x ~/bin/repo




Step 5> 다운로드 할 폴더 준비



폴더명은 마음대로 하시면 됩니다, 전 androidSource로 했습니다.

mkdir androidSource

cd androidSource




Step 6> 다운로드 시작



다운로드에 굉장한 시간이 걸립니다! 저는 두시간 정도 걸렸습니다

-b 옆에는 자신이 받고 싶은 안드로이드 버전을 지정합니다. 저는android-4.4.4_r1(KitKat)으로 했습니다.

repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.4_r1

repo sync






Step 7> 빌드 시작



빌드에 굉장한 시간이 걸릴 수 있습니다! 저는 40분정도 걸렸습니다

source build/envsetup.sh

lunch 1

make -j6



Step 8> 에뮬레이터로 확인하기



emulator



이클립스를 통한 개발, 즉 프로젝트 import및 소스코드 다루기는 다음 글로 가주세요 다음 글로