Android/Platform2009. 10. 16. 14:25

공식적으로 Android Platform 개발 환경으로는 Linux(Ubuntu)와 MAC OS를 언급하고 있다.
http://source.android.com/download

M$의 Window를 사용하고 있는 상태라면
Vvirtual Box등을 통해 ubuntu를 설치하거나, Linux, Window 를 멀티 부팅하게 하여
Android Platform 소스를 받고 컴파일을 하는 방법이 있을 것이다.(상위 링크 참고)

Android Code의 Distribute와 Contribute는 repo와 git라는 툴을 사용해서 한다.
git은 CVS, TortoiseSVN, ClearCase등과 같은 code를 관리하는 툴이라 생각하면 된다.
repo는 git기반으로 작성되었고 git의 많은 저장소들을 쉽게 관리할 수 있도록 도와주는 툴(스크립트)이다.
http://source.android.com/download/using-repo

그렇다.
window에서 git을 사용할 수 있다면 android platform 소스를 다운 받을 수 있는 것이다.
하지만 컴파일은 안된다.

우선 아래 링크를 참고하여 window에서 사용가능한 msysgit을 download하고 설치한다. (cygwin도 설치 해야함)
설치 시 옵션들이 잘 이해가 되지 않는다면
default 값들을 유지하면 Next만 눌러도 된다.

msysgit -
Git on Windows 개발 사이트
http://code.google.com/p/msysgit/

msysgit Download List

http://code.google.com/p/msysgit/downloads/list

설치가 완료되었으면 Git BashGit GUI를 확인 할 수 있다.

그럼 설치된 Git Bash를 실행해보자. terminal이 뜬다.

git을 이용하여 repository에서 소스를 내려 받는 기본 명령은 다음과 같다.

$ git clone git://android.git.kernel.org/platform/manifest.git mydroid


하지만 위와 같이 입력을 하게 되면 mydroid라는 폴더밑에는 default.xml 파일만 다운로드를 받고 작업이 완료된다.
원래 Linux 환경에서는 repo sync 를 이용하면
default.xml 파일을 참고하여서 전체 platform source를 다운을 받게 되는 것이다.
(실제 msysgit에서 curl을 통해서 repo를 설치하고 repo sync를 실행하여 다운로드를 시도해 봤으니
여러가지 에러가 발생하였다.)

하지만 우린 repo를 사용하지 않을 것인데,
그렇다면 160여개가 넘는project 파일들을 어떻게 다 다운 받을 것인가?
아래와 같이 일일이 입력 해줘야 한다!!!

git clone git://android.git.kernel.org/kernel/lk.git
git clone git://android.git.kernel.org/kernel/omap.git
git clone git://android.git.kernel.org/kernel/experimental.git
git clone git://android.git.kernel.org/kernel/msm.git
git clone git://android.git.kernel.org/kernel/common.git
.....

다행히 이러한 작업을 간단히 스크립트로 만들어 둔 분이 계시다.
http://bradchow.wordpress.com/2009/01/20/get-android-source-code-in-m-windows/

Download File :


해당 사이트에서 가져온 스크립트 첨부파일을 다운 받은 다음
아래와 같이 git bash에서 실행을 하게 되면 android full source를 다운 받을 수 있다.

$ sh autogit.sh


총 5.5G 정도의 디스크 공간이 필요하다.
필요한 소스만 받고 싶다면
http://android.git.kernel.org/
사이트를 참고하여서 원하는 project만 다운로드를 받아도 된다.

Posted by ekwang
Android/Tools2009. 10. 12. 13:18
http://source.android.com/using-eclipse
의 내용 중.

Increase Eclipse's Memory Settings

The Android project is large enough that Eclipse's Java VM sometimes runs out of memory while compiling it. Avoid this problem by editing the the eclipse.ini file. On Apple OSX the eclipse.ini file is located at /Applications/eclipse/Eclipse.app/Contents/MacOS/eclipse.ini

Memory-related defaults (as of Eclipse 3.4)

-Xms40m
-Xmx256m
-XX:MaxPermSize=256m

Eclipse에서 android source를 보기 위해서는 위와 같이 JVM의 heap size를 증가 시켜주는 것이 eclipse 를 구동하는데 안정적이고 좋다.
만약 heap size를 증가 시키지 않으면 OutOfMemoryErrors 를 자주 보게 될 것이다.

간혹 위의 내용을 참고하여 eclipse.ini 파일을 위와 같이 수정하였으나
아래와 문제가 발생하며 eclipse가 실행되지 않는 현상을 접하는 분들이 있을 것이다.
JVM terminated. Exit code=-1
-Xms256m
-Xmx512m



이때 아래와 같이 eclipse.ini를 수정 후 정상 동작 한다.

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vm
C:\Program Files\Java\jdk1.6.0_03\bin\javaw.exe

-vmargs
-Xms256m
-Xmx512m
-XX:MaxPermSize=256m


-vm 옵션을 이용하여 javaw의 위치를 정확히 지정해 준 이후에 eclipse가 위의 에러없이 정상 동작 함을 확인 하였다.

추가로 http://wiki.eclipse.org/Eclipse.ini 를 보면 아래와 같은 내용이 있으니 참고한다.
-vmargs 옵션 아래로 선언되는 옵션 값들은 JVM에게 전달해 주는 것이다.
즉 heap size 조정 option들은 -vmargs 아래쪽에 위치 해야 한다는 이야기이다.

Important:
  1. Each option and each argument to an option must be on its own line.
  2. All lines after -vmargs are passed as arguments to the JVM, so all arguments and options for eclipse must be specified before -vmargs (just like when you use arguments on the command-line)

알다시피 eclipse는 JVM에서 구동이 되는 application이므로 우리는 JVM에게 eclipse를 구동하기 위해서 얼마의 heap을 사용 할 수있도록 option값을 주는 것이다.

참고 site:
http://wiki.eclipse.org/FAQ_How_do_I_increase_the_heap_size_available_to_Eclipse%3F
Posted by ekwang
Android/Platform2009. 9. 19. 15:38
얼마전 Android SDK 1.6 이 Release 되었다.
뒤늦게 upgrade를 하고 Eclipse에서 Emulator를 구동하니 아래와 같은 두가지 문제가 발생하였다.
해결 방법을 알아보자.





Eclipse 에서 Run 동작 시 Console에 아래와 같은 에러 발생함.
An internal error occurred during: "Launching Android Test".
com.android.ddmlib.AndroidDebugBridge.getDevices()[Lcom/android/ddmlib/IDevice;


해결책 :
아래 이미지와 같이 ADT, DDMS의 버젼이 최신인 0.9.3을 유지하고 있는지 확인해야 한다.
위와 같은 에러가 발생할 경우 DDMS의 버젼이 0.9.1로 남아 있을 경우가 있다.
DDMS를 다시 update하여 0.9.3을 다운 받은 후 Run을 하면 위의 에러가 발생하지 않는다.








Eclipse 에서 Run 동작 시 Console에 아래와 같은 에러 발생함.
Emulator]emulator: ERROR: bad config: virtual device directory lacks config.ini
Emulator]emulator: could not find virtual device named 'avd_1_6
'

해결책 :
1. 이미 AVD를 생성한 경우 move 해주는 방법
window에서 로그인 계정이 한글일 경우( AVD 경로에 한글이 포함된 경우, 한글이름 계정 ),
SDK 1.6에서 AVD 생성 후 emulator 를 동작 할때 AVD를 찾지 못해서 위와 같은 에러가 발생할 수 있다.

AVD를 생성 할때 기본설정에 따라
C:\Documents and Settings\한글계정\.android\avd 에 AVD가 생성 된다.
> android move -n avd_1_6 -p c:\avd\avd_1_6

와 같은 식으로 AVD를 한글 path가 없는 곳으로 이동 하면 정상적으로 emulator가 구동 된다.

또는 애초에 avd를 create할때 부터 -p 옵션을 이용해서 default path가 아닌 영문으로 된 곳으로 지정을 해주면 된다.

2. 새로운 AVD를 생성하는 방법

아래와 같이 avd를 한글이 포함되지 않은 경로에 avd를 생성한다. (android SDK 2.0, 2.0 이하의 경우 -t 3 이하로..)
> android create avd -n avd_2_0 -p c:\avd\avd_2_0 -t 4

SDK에서 제공하는 여러 Tool들을 consol(terminal)에서 다루는 방법을 익혀둔다면 개발에 유용할 것이다.
Posted by ekwang