본문 바로가기

리눅스 커널 Linux kernel

우분투 안드로이드 빌드 해보기 (fail) - 1

한번에 포스팅 하려 했는데, 그림이 많은 관계로 나눕니다.

그리고 결국엔 이 포스팅은 시도로 끝납니다. 또 실패했습니다.

현재 우분투(13.04)에서 안드로이드를 빌드해보기 위해 준비 중입니다.

이를 하는 목적은 안드로이드에 대한 block trace를 얻기 위함입니다.

http://www.android-x86.org/ 이 페이지에 들어가셔서 iso 파일을 받아

vmware에 설치하는 것도 가능합니다.

이렇게 되면 vmware에 안드로이드 기기가 설치되어

eclipse 보다 나은 속도감을 느끼실 수 있습니다.

로딩 시간 자체부터 차이가 납니다.

 

먼저 어떤 버전을 빌드 할 것인지를 정해야 합니다.

  • android-x86-v0.9 (obsolete)
    Based on Android 1.5 release (Cupcake).
  • donut-x86
    Based on Android 1.6 release (Donut).
  • eclair-x86
    Based on Android 2.1 release (Eclair).
  • froyo-x86
    Based on Android 2.2 release (Froyo).
  • gingerbread-x86
    Based on Android 2.3 release (Gingerbread).
  • honeycomb-x86
    Based on Android 3.2 release (Honeycomb).
  • ics-x86
    Based on Android 4.0 release (Ice Cream Sandwich).
  • jb-x86
    Based on Android 4.2 release (Jelly Bean).

제공되는 버전은 이렇습니다.

버전을 정하였으면 환경설정이 필요한데, 여기서 또 갈라질 수 있는 것 같습니다.

진저브레드 2.3버전 위로는 64bit 환경이 필요하고 이전 버전은 32bit에서 컴파일 됩니다.

저는 어차피 최신 기기 아니면 의미 없으므로 4.2버전을 시도할 것입니다.

가상머신에서의 빌드는 적어도 16GB의 RAM과 30GB의 디스크 용량이 필요하다는군요.

다음으로 필요한 소프트웨어 입니다.

  • Python 2.6 -- 2.7, which you can download from python.org.
  • GNU Make 3.81 -- 3.82, which you can download from gnu.org,
  • JDK 6 if you wish to build Gingerbread or newer; JDK 5 for Froyo or older. You can download both fromjava.sun.com.
  • Git 1.7 or newer. You can find it at git-scm.com.

우분투 3.10.1을 사용하니 Python은 이미 버전을 만족하는군요.

버전이 다르시면

http://blog.nextcube.pe.kr/81 포스팅을 참고해주시면 되겠습니다.

GNU Make도 따로 설치가 필요 없네요

JDK는 설치가 필요합니다.

설치되면 이러한 결과가 출력됩니다.

(근데 이게 맞는지는 저도 잘 모르겠습니다. 검색해보니까 jdk 설치 방법이 버전마다

다양하기도 하고 복잡합니다.) ($ java –version)

git도 설치가 필요합니다.

설치가 끝나고 버전을 확인합니다. ($ git –version)

환경 구성은 아직 멀었습니다. http://source.android.com/source/initializing.html

이 페이지를 보면서 환경구성을 하고 있는데 포스팅 제목에서도 알 수 있고, 이 페이지에서도

알 수 있듯이 제가 vmware에 설치한 우분투의 버전은 13.04 버전으로 실험적인 것만 지원하지

정확히 설치될지 알 수 없는 현 상황입니다.

그래도 계속 따라 가보겠습니다.

다음으른 12.04버전에서 지원되는 소프트웨어 설치입니다. 13.04에 대한 내용은 없어서

12.04 버전의 것을 설치를 합니다.

$ 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

이렇게 두 가지 명령어가 있고요. 이 명령어들 다 치기 어렵습니다.

vmware-tool이 설치된 우분투시면 윈도우에서 복사 & 붙여넣기 가능하십니다.

이제 다음으로 USB 접근에 대한 설정입니다. 우분투 시스템은 기본적으로 USB에 대한 직접

접근을 허용하지 않는다는 군요. 그래서 아래의 내용을 /etc/udev/rules.d/51-android.rules

여기에 붙여 넣으랍니다. 단 OWNER="<username>"은 실제 사용자 이름으로 USB 접근을 승인

받을 사용자 이름이 들어가야 한답니다. 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>"
# 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>"

 

했습니다.

다음 과정은 ccache 설정 과정입니다. 이 과정은 옵션으로 컴파일 툴에 ccache를 사용해

rebuild 과정을 빠르게 하고 싶다는 뜻입니다.

홈 디렉토리의 .bashrc파일에

 

export USE_CCACHE=1
        

이 코드를 넣어줍니다.

만약 파일 시스템이 NFS 혹은 non-local이라면 (네트워크 바탕일 경우 다른 설정이 필요합니다.)

한 과정이 더 있지만 빼고 가겠습니다.

여러 개의 스토리지가 있는 디바이스에서의 처리인 것 같아서..