Posts List

2014년 1월 24일 금요일

Getting a source and building of Kitkat

[Prepare the environment]
① Python and Make Utility 
  Python이나 Make 유틸리티 같은 경우에는 기본적으로 리눅스 패키지에 포함되어 있다.
혹시 설치 시에 누락되었을 경우 apt-get 설치 관리자를 통하여 쉽게 다음 명령어로 쉽게 설치 가능하다.

  $ sudo apt-get install python
  $ sudo apt-get install make


② JAVA JDK
  JDK를 설치하는 방법은 다음과 같이 안드로이드 사이트에 명시되어 있다.

 sudo add-apt-repository ppa:webupd8team/java
 sudo apt-get update
 sudo apt-get install oracle-java6-installer


더 상세히 보면....


먼저, python-software-properties 패키지가 필요한데 보통은 기본적으로 깔려있다.
하지만 없는 경우도 있으니 다음 커맨드로 먼저 설치하여 준다.

  $ sudo apt-get install python-software-properties

그리고 나서 다음 명령을 입력하여 준다. 
첫 번째 명령을 치면 계속하려면 Enter, 중지하려면 Ctrl + C 키를 입력하라고 나오는데
ENTER를 쳐주면 계속해서 다운로드 패키지를 등록한다.
  $ sudo add-apt-repository ppa:ferramroberto/java
  $ sudo apt-get update

그러면 sun-java6-jdk 패키지가 등록이 되고 설치가 된다. java6-jdk와 플러그인 설치를 위해
다음의 명령어로 설치 할 수 있다.
  $ sudo apt-get install sun-java6-jdk sun-java6-plugin

  
그런데 위의 명령을 통해서 JDK를 설치 할 수 있으나 버젼이 java 6만이 가능하다.
따라서 java7, java8 등 상위버전을 설치하고 싶다면 다음 명령으로 설치 가능하다.
  $ sudo add-apt-repository ppa:webupd8team/java
  $ sudo apt-get update

그러면 Oracle Java Installer를 통해서 원하는 버전의 자바 JDK의 설치가 가능하다.

Java 6를 설치하려면,
  $ sudo apt-get install oracle-java6-installer


Java 7을 설치하려면,
  $ sudo apt-get install oracle-java7-installer



Java 8을 설치하려면,
  $ sudo apt-get install oracle-java8-installer


설치 후 이미 중복 설치되어 있는 여러버전의 JDK를 관리해 줄 필요가 있을 수 있다.
그럴 때는 다음 명령어를 통해서 원하는 JDK를 선택하여 주면 된다.
  $ sudo update-alternatives --config java 


   선택       경로                                    우선순  상태
-----------------------------------------------------------------------------------------------------
* 0            /usr/lib/jvm/java-8-oracle/jre/bin/java       1062      자동 모드
   1            /usr/lib/jvm/java-6-openjdk/jre/bin/java    1061      수동 모드
   2            /usr/lib/jvm/java-8-oracle/jre/bin/java       1062      수동 모드

기본 사항[*]을 사용하려면 엔터, 다른 것을 사용하려면 번호를 입력하십시오:


그럼 위와 같은 콘솔 화면이 나오는데 목록 중 원하는 JDK의 번호를 입력하여 선택해 주면 된다.
선택된 자바의 버전을 확인하기 위해서 다음 명령어를 통해 확인하여 본다.
  $ java -version 


③ GIT
  리눅스 커널은 git에 의해 버전이 관리되고 다운로드 할 수 있다.
따라서 git을 설치해주어야 한다. git 또한 apt-get을 이용하여 손쉽게 설치 가능하다.

  $ sudo apt-get install git




 2. 필요한 라이브러리 패키지들

우분투의 버전마다 필요한 라이브러리가 살짝 다르긴 하다. 구글에서는 우분트 10.04 64비트를 권장하고 있다. 

  안드로이드 사이트에서는 우분투 버전 10.04 ~ 11.10에 해당하는 시스템들은 다음 명령어를 통하여 필요한 라이브러리를 설치하라고 명시되어 있다.

 $ sudo 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 lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev g++-multilib mingw32 python-markdown libxml2-utils xsltproc

하지만, 이 또한 업데이트가 되지 않아 몇 가지 라이브러리가 오류가 발생한다.
오류가 발생하거나 대체된 것들을 수정한 다음 명령어를 실행하면 한번에 설치 가능하다.

 [ ubuntu 10.04에서 ] 
  $ sudo sudo 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 lib32z1-dev libgl1-mesa-dev g++-multilib mingw32 python-markdown libxml2-utils xsltproc libpcsclite-dev


[ ubuntu 11.10에서 ] 
  $ sudo 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 lib32readline-gplv2-dev lib32z1-dev libgl1-mesa-dev g++-multilib mingw32 python-markdown libxml2-utils xsltproclibpcsclite-dev


우분투 10.10 인 경우에는 다음 명령을 통하여 링크하나를 생성해 준다.
   $ sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so


우분투 11.10은 추가적으로 패키지 하나를 추가로 설치하여 준다.
   $ sudo apt-get install libx11-dev:i386


우분투 12.04 버전인 경우 다음 명령을 통하여 설치해 준다.  
   $ sudo apt-get install git-core 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 openjdk-6-jdk tofrodos \
  python-markdown libxml2-utils xsltproc zlib1g-dev:i386


 하지만 libgl1-mesa-glx:i386 패키지가 libglapi-mesa:i386 의존성으로 인해 설치가 안 되므로
 libglapi-mesa:i386패키지를 추가하여  설치하여 준다. 또한 "make menuconfig"를 수행하기 위하여
필요한 lib32ncurses5-dev 도 미리 설치하여 준다.
   $ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libglapi-mesa:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 openjdk-6-jdk tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 lib32ncurses5-dev


혹시 다음과 같은 에러가 발생한다면,  
 다음 패키지의 의존성이 맞지 않습니다:
 lib32ncurses5-dev : 의존: libncurses5-dev (= 5.9-4) 하지만 %s 패키지를 설치하지 않을 것입니다
E: 문제를 바로잡을 수 없습니다. 망가진 고정 패키지가 있습니다. 
위의 패키지에서 libncurses5-dev만 빼고 설치 후
$ sudo apt-get install lib32ncurses5-dev 명령으로 libncurses5-dev만 따로 설치해 준다.


다음 명령을 통하여 링크 파일도 생성하여 준다. 
  $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Install the repo:
Code:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
6) Initialize the repo:
Code:
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY
6a) For AOSP:
Code:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.4_r1
6.1) For people who have already done a repo init:
Code:
$ cd WORKING_DIRECTORY
AOSP:
Code:
$ repo init -b android-4.4_r1
$ repo sync
7) When prompted, enter your real name and email address.

8) Gather the files:
Code:
$ repo sync
 7) Navigate back to your home directory for building:
Code:
$ cd ~/WORKING_DIRECTORY
8) Prepare To Compile:
Code:
$ source build/envsetup.sh
Or:
Code:
$ . build/envsetup.sh
9) Get your list of devices:
Code:
$ lunch
10) Pick your poison.

11) Now compile ('#' being the number of cores in your processor +1):
Code:
$ make -j#
Or for a flashable zip:
Code:
$ make -j# otapackage

Emulate an Android Device

The emulator is added to your path automatically by the build process. To run the emulator, type
$ emulator



[Reference]
http://blog.naver.com/PostView.nhn?blogId=ysjin1212&logNo=110166566875
http://forum.xda-developers.com/showthread.php?t=2506695
http://source.android.com/source/building-running.html

Freeze in Ubuntu logo in boot

[Reason]
lightdm (light gdm) has some bugs. It is still in develop. So, suggest gdm instead of it.

[Solution]
1. Press Ctrl+Alt+F1 to get to a text-based virtual console
2. Uninstall lightdm and install gdm instead.
sudo apt-get remove lightdm
sudo apt-get update
sudo apt-get install gdm
sudo start gdm

3. When you fail to log-in,
sudo apt-get update
sudo apt-get install ubuntu-desktop
sudo apt-get install -f install
sudo dpkg-reconfigure ubuntu-desktop
sudo reboot

[Reference]
http://askubuntu.com/questions/175481/ubuntu-12-gdm-install-remove-problem
http://askubuntu.com/questions/205872/failed-to-load-session-ubuntu