안드로이드를 빌드하기 위해서 이런저런 세팅을 하다가 이건 정리해놔야겠다 싶어서 적어보겠습니다.

일반적으로, 우분투 10.04를 설치하고 나면 sun-java6-jdk 설치가 잘 안됩니다. 이게 있어야 안드로이드가 빌드가 된다던데.
결국 두번의 실패를 딛고 마지막에 성공했습니다.
급한 분들은 맨 밑만 보면 됩니다.


뭐 일단 아래 이런 패키지는 그냥 설치하실 수 있으니까 그러려니 하면서 설치 해 줍니다.

$ sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev  ant gcc-multilib g++-multilib

 
이 메시지를 보게 됩니다.

$ sudo vi /etc/apt/source.list
에서 캐노니컬에 해당하는 라인의 주석을 빼줍니다. 대략 45, 46라인이겠네요.

$ sudo apt-get update

<$ sudo apt-get install sun-java6-jdk
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
sun-java6-jdk 패키지를 사용할 수 없습니다.  하지만 다른 패키지가 참조하고 있습니다.
해당 패키지가 누락되었거나 지워졌다는 뜻입니다. 아니면 또 다른 곳에서
패키지를 받아와야 하는 경우일 수도 있습니다.
E: sun-java6-jdk 패키지는 설치할 수 있는 후보가 없습니다

아, 짜증이 밀려옵니다. 아마도 OpenJDK를 밀기 위한 것인듯 한데. 

또 찾아봤습니다. (참고:http://ammoguy.springnote.com/pages/354463)

sudo add-apt-repository "deb http://archive.canonical.com/ubuntu maverick partner"

추가해줍니다. 아까 한 sudo apt-get update 도 잊지 마시고...
또 안됩니다. 다시 찾았습니다 -_-^
왜 다른 분들 방법이 제겐 안 통하는지. (아마 시간의 힘으로 패키지에서 빠져나간 탓이 제일 클거라 생각합니다.)

그래서 결론은 이 세줄입니다. (참고:http://blog.daum.net/pharosee/14853351)

sudo add-apt-repository ppa:sun-java-community-team/sun-java6

sudo apt-get update

sudo apt-get install sun-java6-jdk



출처는 각각 명시했습니다. 
 
문득 이클립스(Galileo)를 켤 때마다 오류가 하나씩 생깁니다. 아무래도 너무 드문드문 켜서 그런 것 같습니다. 이번에는 SDT 관련 문제입니다.

Android DDMS    16.0.1.v201112150204-238534
Android Development Tools    16.0.1.v201112150204-238534
Android Hierarchy Viewer    16.0.1.v201112150204-238534
Android Traceview    16.0.1.v201112150204-238534

에 대해서 아래의 오류가 발생합니다.

Cannot complete the install because one or more required items could not be found.
  Software being installed: Android Traceview 16.0.1.v201112150204-238534 (com.android.ide.eclipse.traceview.feature.group 16.0.1.v201112150204-238534)
  Missing requirement: Android Traceview 16.0.1.v201112150204-238534 (com.android.ide.eclipse.traceview.feature.group 16.0.1.v201112150204-238534) requires 'org.eclipse.ui 3.6.2' but it could not be found

이클립스 UI 3.6.2라는 것은 이클립스의 버전 그 자체를 의미합니다. 그래서 메뉴중에 [Help] - [About Eclipse SDK]에서 버전을 확인했습니다. (참고:http://forjustin.egloos.com/1070695)


3.5.2네요! 갈릴레오 버전이죠 :$

그래서 업그레이드를 실시했습니다. 헬리오스로...

아래의 이 방법을 쓰려다가 그냥 쿨하게 삭제 후 재설치 했습니다.

To upgrade installed software, do the following:

  1. Help > Check for Updates.
  2. If updates are found, proceed through the install wizard and click Finish at the end.
  3. If you are upgrading the platform itself, when you are prompted to restart it is strongly recommended to do so. A restart many not be required when updating other features, but always select to restart if you are unsure.

Note, to upgrade from Galileo(3.5) to Helios (3.6), you first need to add the Helios software repository as follows:

  1. Window > Preferences > Install/Update > Available Software Sites.
  2. Click “Add”.
  3. Enter
  4. http://download.eclipse.org/releases/helios
  5. Click “Ok”.

쿨하게 시냅틱 패키지 관리자에서 삭제 후 재설치 (참고:문허니님 블로그)

http://www.eclipse.org 에 접속하여 맘에 드는 놈을 다운 받습니다. 저는 Eclipse for Java EE Developer 버전을 다운 받았습니다. 그냥 Java Developer 버전도 상관은 없을것 같았지만. 왠지 찝찝해서 제일 패키지 많이 포함된걸로 받은거지요 :)

1. 압축을 풀고 디렉토리를 이동시킵니다. 압축 푸는건 유저 권한으로 되지만 나머지는 슈퍼유저로 해야합니다. 앞으로 쭉~ 슈퍼유저 권한을 사용합니다.

tar xvzfp eclipse-jee-helios-SR2-linux-gtk-x86_64.tar.gz

mv eclipse /usr/local/
cd /usr/local
chmod +x eclipse/

2. 스크립트를 만듭니다. 실행하려면 있어야겠죠?

(파일을 만듭니다)
vi /usr/bin/eclipse

(파일 내용)
#!/bin/sh
export ECLIPSE_HOME="/usr/local/eclipse"
$ECLIPSE_HOME/eclipse $*

(권한 지정)
chmod 755 /usr/bin/eclipse


3. 아이콘을 만드는 작업을 합니다.
(데스크탑 메뉴의 아이콘을 만듭니다. 파일 생성)
vi /usr/share/applications/eclipse.desktop

(파일 내용)
[Desktop Entry]
Encoding=UTF-8
Name=Eclipse
Comment=Eclipse IDE
Exec=eclipse
Icon=/usr/local/eclipse/icon.xpm
Terminal=false
Type=Application
Categories=GNOME;Application;Development;
StartupNotify=true

4. 그리고는 우분투 메뉴중 [프로그램] - [개발]에 아이콘이 생긴걸 확인합니다.
만약 실행이 제대로 되지 않는다면 권한 문제일 가능성이 큽니다. chmod 같은 명령이 제대로 들어갔는지 확인합니다.

그리고는 ADT 설정을 다시 해줘야 합니다. 아흑. ADT부터 다운 받습니다. SDK는 일단 새로 받긴 했는데 쓰던걸로 쓰려고 -ㅅ- 꼼수를 씁니다.

[Help] - [Install Software..]에 https://dl-ssl.google.com/android/eclipse/를 추가하고나면 Pending이 끝나고 목록이 보입니다. 그냥 설치합니다. 이 과정을 거치면 이전에 쓰던 설정이 모두 남아있는 것을 보실 수 있습니다.

DDMS나 Debug에 문제가 생겨서 Perspective가 안 뜨는 상황이 있을 수는 있지만... 리셋해주면 잘 뜹니다!!

즐거운 코딩 하시길 :D



이건 이 나름대로의 쓸모가 있기 때문에 적어두겠습니다. 환경은 우분투 10.10입니다.

흔히 터미널을 띄워서 응용 프로그램을 실행하면, 터미널 안에서 실행되는 애들은 괜찮은데 - 창을 그대로 사용하잖아요 - 그렇지 않은 프로그램들은 터미널에서 프로세스로 도느라 터미널은 못 씁니다. 그래서, 준비했습니다.

바로 Alt + F2 를 누르면 실행 창이 뜹니다. 바로 Windows에서의 '실행'창과 같은 역할을 하는 창입니다. 여기에서 프로그램을 경로 지정해서 실행시킬 수 있어요. 예를 들어 일전에 포스팅한 DrRacket이라던가... ('ㅅ')

쉘 명령도 먹겠죠? 그래서 참조 한 사이트(Kevin님 블로그)에서는 gnome-terminal을 실행할 수 있다고 해 두셨습니다.

뭐 기타 등등도 먹습니다.

덧붙임으로 좀 더 내용을 적자면, Ctrl + Alt + F1~F7 까지는 tty1~7까지입니다. 눌러보면 깜짝 놀랍니다. 검정색 터미널 화면으로 바뀌어서. startx 해도 안 먹어요. tty7에 해당하는 Ctrl + Alt + F7이 바로 X-window 환경으로 돌아오는 단축키 입니다.(F7로 안되면 F8이 되는 환경도 있다고도 하네요)

이제... 안 까먹겠죠? 그럴거에요.
제목에 적은대로 SICP(시습이라고 읽습니다)이라는 굉장히 유명한 프로그래밍에 대한 책이 있습니다. 사실은 프로그램의 구조와 같은 것에 대한 책입니다. MIT, 서울대, 카이스트에서 교재로 사용된 책이라고 하는데요.

우연한 기회에 소프트웨어에 대한 감을 잃지 않고자 공부를 시작하게 되었습니다. (연구실 나왔는데 놀긴 싫고 한건 이유가 아님) 근데 이게 LISP라는 언어를 사용합니다. 정확히는 Scheme라는 LISP의 방언이라고 합니다.

근데 요거 64Bit 환경하에서는 실습환경 설치하기가 만만치가 않습니다. 다만, 64Bit 환경에서는 그 지원이 미흡하다는 이유가 있더군요. 저는 우분투(Ubuntu) 10.10을 쓰는데 패키지가 없습니다. mit-scheme이라고 하는 패키지가 있다는데. 64Bit에는 없어없더라구요.

그래서 대안을 찾아 헤맸습니다.

그 방법이라는건 DrRacket이라는 과거 DrScheme이었던 LISP 툴(?)을 쓰는겁니다. 이건 환경도 제공합니다. 따라서 http://www.racket-lang.org/ 요기 들어가서 Download에서 알맞는 버전을 받습니다. 우분투는 debian lenny 정도 받으면 되겠습니다. 제 랩탑에서는 저정도면 되더라구요.

그리고는 권한을 바꿔줍니다. 대강 chmod를 사용해서 744정도로 Execute 권한만 넣어 주시면 되요. 쉘 코드라서 설치할 땐 실행 권한이 필요하니까요.

다음으로는 블라블라 하는데 경로랑, 링킹에 관련한 겁니다. 입맛대로 골라줍니다.

그리고는 설치 경로(제 경우엔 /usr/racket)에 bin(그러니까 /usr/racket/bin)에 들어가서 ./drracket을 실행하면 환경이 뜹니다. 위에 보이는 창이 정의창(Definition window)이고 아래가 명령창입니다.

일단은 언어를 설정을 해야하는데요, how to do program의 고급 학생(...)정도로 일단 세팅을 하고 실행을 해서 적용합니다. 그 후에 여기에서 #lang planet neil/sicp 이라고 정의창에 쓰고 실행을 시켜주면~ 알아서 언어 설정을 받아옵니다. 그럼 환경을 재실행 해보면 언어 세팅에! SICP이 뜹니다!!

세팅이 잘 되었으면 정의창에 (define size 2) 쳐 보시고~ 명령창에 size 쳐 보세요!

2가 뜨면 성공입니다 :)


DRY(Don't repeat yourself) 게시물입니다.

안드로이드 프로젝트는 생성할 때 적어줘야 하는 것이 많은 편입니다. 이클립스로 개발을 잘 안해봐서 그런지 좀 낯설어기도 하구요.

그래서 일단 정리를 좀 해두려고 합니다. 외워도 외워도 안 외워지는건 써봐야 한다는 지론에 따라서요.

Application Name은 말 그대로 앱 이름입니다.
Package Name은 패키징 될 때의 이름입니다. 이 것을 가지고 다른 데에서도 접근할 수 있는 것으로 알고 있습니다. 자바의 import 관련한 실험(?)도 일전에 해봤는데 그 프로젝트 찾으면 포스팅 해봐야겠네요.

그리고 Activity는 안드로이드의 4대 특징 중 하나인데 까먹었-_-습니다.
하여튼 이것도 이름을 지정해야 합니다. 얘는 띄어쓰기가 들어가면 안되더군요. 아무래도 파일 이름에 관련되기 때문인 것 같습니다.

Package Name의 경우가 좀 특이한데, 이 패키지 이름은 겹치지 않게 하는게 중요하기 때문에 회사의 경우에는 자신의 홈페이지 주소를 거꾸로 써서 적용을 시킨다고 들었습니다. (www.google.com = com.googlr.~~)

그래서 개인적으로 개발을 하는 저는 pe.util.(blabla) 라고 패키지 이름을 정하고는 합니다.

이렇게 정리 해 놓으면 될 것 같네요.

아래는 제가 전에 실습했던 화면의 캡쳐입니다.



여러가지 이유가 존재하겠지만 제 경우에는

sudo apt-get install tftpd tftp xinetd

하고서

설정파일을 만들어 주고
service tftp {

    socket_type = dgram
    protocol = udp
    wait = yes
    user = root
    server = /usr/sbin/in.tftpd
    server_args = -s /tftpboot
    disable = no
    per_source = 11
    cps = 100 2
    flags = IPv4
   
}

/etc/init.d/xinetd restart 해 주고 나니

Error code 2: Access violation

(울컥)

찾은 해결책은 아래와 같습니다. (/etc/inetd.conf를 수정합니다)
저 파일의 내용물-_-중 tftp관련 줄을 #(주석처리) 해 주고

tftp dgram udp wait root /usr/sbin/in.tftpd in.tftpd -s /tftpboot(혹은 원하는 디렉토리..)
라고 하고 다시 xinetd restart.

그러면 됩니다. get, put 모두모두. 놀라운 삽질력으로 해결 <-




일단 사진을 보시라. 저기에서 주목해야 할 부분은 r1 = 0x000002d5이 부분으로, 무려 MACHINE ID라는 부분이다. http://www.arm.linux.org.uk/developer/machines/ 이 사이트에 들어가면 MACH ID를 검색할 수 있는데 ARM 계열의 보드에 포팅을 실시할 때 필수적으로 맞춰져야 하는 부분으로 보인다. 이유는 바로 저처럼 에러 나면서 굳기 때문이랄까?

사실 이건 단순한 이유고, 각각 보드 혹은 프로세서마다 아키텍처가 달라서 설정을 해 줘야 하는 부분들이 각기 다르게 되기 때문인 것으로 보인다. 근데 문제는 저 725(=0x000002d5)에 해당하는 MACH ID가 보드를 만든 제조자와는 전혀 상관없는 사람들이라는거? 그마저도 가장 흡사할거라고 기대했던 보드(Lubbock)와도 전혀 다르다.

이게 무슨 조화냐! 오늘도 이렇게 삽질을 한다. 처음에 조금 호환이 되는 보드였으면 좋았을걸~ 이라는 생각을 하면서, 돈 생기면 보드 하나 사는걸 목표로 해야겠다. 관심이 있으면, 그걸 하는게(열심히 파는게=digging, 삽질) 진리//

관련 파일은 (Kernel Source)/arch/arm/tools/mach-types

Reference : http://tmi.cau.ac.kr/wiki/index.php/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%BB%A4%EB%84%90_%ED%8F%AC%ED%8C%85_-_PXA270


안드로이드 툴 체인을 찾아 헤매는 분들이 계실지도 몰라서 포스팅 합니다. 사실 저도 엄청나게 헤매서요:-P

이런저런 툴 체인을 받기 보다는 여기(http://source.android.com/download)서 repo sync까지 마친 이후에-소스 다운에 대한 포스팅은 조금 나중에..- 찾아 보면 안드로이드 전체 소스 중에 그 툴체인이 있는데요.


PATH는 (소스 디렉토리)/prebuilt/ 안에 플랫 폼 별로 있는 것 같던데 ARM은 저기 쓰인대로, ./prebuilt/linux-x86/toolchain/arm-(버전..) 이렇게 있습니다. 4.3.1과 4.2.1인가 두 버전이 있구요.

앞으로는 헤매는 분들이 조금 줄어들길 바랍니다. 커널 포팅 빨리 해야하는데 처음하는거라 전혀 속도가 안 붙네요. 두 달 째(흑흑)..

+ Recent posts