안드로이드는 개발환경 구축이 좀 빡세네요.
Java는 원래 다 그런 것인가....-_- 자바는 셋팅이 반이라는 말이 있는데, 이놈은 셋팅도 다시 해야하고, 사실 언어만 java지 안드로이드에 맞는 class와 구조를 다시 배워야하는 거라 자바를 좀 안다는 사람이나 자바를 전혀 모르는 사람이나 뭐 차이가 없습니다.

그리고, AVD(Android Vritual Device)라고 해서 가상 에뮬레이터에서 실행할 수 있고, 모토로이에서도 실행할 수 있는데, 일단 가상에뮬레이터는 좀 느립니다. EditText부분에 글을 쓸 때 반응속도가 너무 느려서 짜증이 밀려내려옵니다.
그래서 개발할 때에는 모토로이에서 하고, 테스트할 때에는 에뮬레이터에서 하는 게 정신 건강에 좀 좋을 듯 합니다. 모토로이에서 개발하고 다른 해상도가 틀린 디바이스 때문에 에뮬레이터에서 테스트해줘야겠죠^^
사실 모토로이에서 디버깅하고 개발하는 게 의외로 편하고 잘 되어있습니다. 정말 신기했습니다^^

일단 셋팅에 대한 많은 글들이 있는데요.
http://john.tobe30.com/tc/292
http://blog.naver.com/ksewookk/100099954283
http://ihoney.pe.kr/entry/01-Android-%EC%84%A4%EC%B9%98%EB%B0%A9%EB%B2%95-%EB%B0%8F-%EC%98%88%EC%A0%9C-%EC%8B%A4%ED%96%89

여기 글들을 참조해서 셋팅을 하세요~
아....모토로이는 버전이 2.0.1이 탑재되어있습니다. 참고하세요~

그럼 프로젝트를 만들고 디버깅을 해봅시다.

1. 프로젝트 생성
Android Project -> Project name에는 TestDebug, Build Target은 2.0.1, Application name은 디버깅테스트, package name은 com.mudchobo.testdebug, Create Activity는 TestDebug 후 Finish.

EditText에 이름을 쓰고, Button을 누르면 Hello, 이름 이라는 어플을 만들겁니다.
main.xml파일 수정
[code]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
>
<EditText
    android:hint="이름입력하세요"
    android:id="@+id/etHello"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:inputType="textShortMessage"
/>
   
<Button
    android:text="sayHello"
    android:id="@+id/btnHello"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
/>
<TextView 
    android:id="@+id/tvHello"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
/>
</LinearLayout>
[/code]
AndroidManifest.xml파일을 선택하고, Application탭을 선택하게 되면 Application Attributes에 Debuggable옵션이 있는데 이걸 true로 줘야합니다.

그럼 src -> com.mudchobo.testdebug패키지에 있는 TestDebug.java파일을 수정해봅시다.
[code]package com.mudchobo.testdebug;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class TestDebug extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        // 버튼에 이벤트 추가
        Button btnHello = (Button) findViewById(R.id.btnHello);
       
        // 버튼클릭 시 리스너추가
        btnHello.setOnClickListener(new View.OnClickListener() {
           
            @Override
            public void onClick(View v) {
                // edittext값 가져오기
                EditText etHello = (EditText) findViewById(R.id.etHello);
                String sayHello = etHello.getText().toString();
               
                // 값을 textview에 셋팅
                TextView tvHello = (TextView) findViewById(R.id.tvHello);
                tvHello.setText(sayHello + ", Hello!");
            }
        });
       
    }
}[/code]
그냥 버튼에 이벤트 추가하고, 버튼클릭 시 값가져와서 값을 셋팅하는 초간단 예제입니다.

2. 디버깅 포인트 잡기
EditText etHello~~ 부분에 Ctrl + Shift + B를 누르거나 맨 앞에 더블클릭해서 Break Point를 잡습니다.
그리고 TestDebug에 오른쪽버튼 누르고, Debug As -> Android Application을 선택하면 실행합니다.
AVD가 떠 있다면 떠 있는 곳으로 어플을 설치하며 실행하고, 없으면 직접 AVD를 실행해서 설치하여 실행합니다.
AVD를 미리 띄워놓고 하는 게 정신건강에 좋습니다. 안그러면 프로그램에 끝나는 순간 AVD도 같이 죽어버립니다-_- 나중에 다시 시작하려고 하면 또 AVD를 부팅하는 꼴이 되어버립니다-_-

암튼, 실행하고 EditText에 말을 입력하고 버튼을 누르면 breakpoint에서 멈출겁니다. 이제 디버깅 하면 됩니다.

3. 모토로이에서 디버깅
이제 모토로이에서 실행해봅시다.

일단 모토로이를 디버깅 가능하게 셋팅해야 합니다.
설정 -> 응용프로그램 -> 개발 -> USB 디버깅 체크하셔서 활성화 시켜주세요.

모토로이를 usb에 연결합니다.
그리고 위와 같이 디버깅을 시작합니다. 그러면 이창이 뜰꺼에요.
사용자 삽입 이미지
이미 띄워놓은 AVD로 실행할래? 모토로이로 실행할래 물어보는 것인 듯. AVD를 띄워놓지 않으면 뜨지 않습니다. 바로 모토로이로 디버깅을 하더군요.
사용자 삽입 이미지
와....디버깅이 잘되네요. 에뮬레이터에서 타이핑 테스트하다 야마돌지 마시고, 모토로이에서 디버깅을 하시길-_-

4. 테스트하고 남은 어플 지우기
그리고 테스트하고 남은 어플은 여기서 지우시면 됩니다.
설정 -> 응용프로그램 -> 응용프로그램 관리 -> 디버그테스트(아까 프로젝트 만들 때 Application Name을 찾으면 됩니다. abcd가나다 순이니 참고하시길^^)선택 후 제거하면 됩니다.

PS. 뭐 별것도 없는 글을 장문으로 써버렸네-_-
 
Posted by 머드초보

댓글을 달아 주세요

 
보니까 1.3.2버전이 작년 1월에 릴리즈가 된 것으로 나오네요. 1.4는 14라는 숫자 때문인지 1월 14일날 릴리즈가 되었습니다.

jQuery사이트 : http://jquery.com/
근데, 재미있는 것은 14 Days of jQuery라는 이벤트(?)를 하네요. 보면 매일매일 하루에 한개씩 뭔가 공개를 하는 듯하네요. 28일까지 진행되는 것  같습니다. 14일 당일에는 jQuery 1.4를 공개했네요. 내일은 뭘 공개할지^^
Javascript 라이브러리 릴리즈로 이벤트를 하다니.....-_- 파는 제품도 아닌데.....대단합니다. jQuery의 위엄인가.....
이벤트 사이트입니다 : http://jquery14.com/

사용자 삽입 이미지
jQuery는 간결하면서도 강력한 코드를 작성할 수 있는 좋은 Javascript Framework죠. jQuery가 내건 문장인 "write less, do more"는 jQuery를 표현하는데에 전혀 부족함이 없는 문장이죠. 모든 브라우저에서 동일한 코드로 작성할 수 있다는 것은 기쁜 일입니다(누가 대체 이런 일을 기쁘게 만들었을까....-_- 브라우저만 다 표준을 지키면 될텐데ㅠㅠ). 아마 jQuery는 하늘에서 내려온 천사같은 것이죠-_-

jQuery는 확장성 있는 개발을 할 수 있어 다수의 플러그인이 존재를 하는 것도 하나의 장점입니다. 그래서 빠르게 개발을 하거나 변경이 자주 일어나는 시스템에 매우 유용합니다.
하지만, jQuery의 단점은 Javascript Framework이다 보니 퍼포먼스의 문제가 있다고 합니다. 사실 Framework는 뼈대같은 것인데, 이런 뼈대를 설계를 하는 이유는 유지보수성 때문에 현업에서도 Framework를 개발해서 사용하죠. Framework를 개발하면 확장성과 유지보수성 등의 시스템 변경에 유용하며 기존코드를 건드리지 않는 구조로 개발할 수 있기 때문이죠.
이런 jQuery도 크로스브라우징과 짧고 간결하고, 쉬운 개발형태를 지향하다보니 퍼포먼스는 그냥 순수 Javascript로 개발할 때보단 확실히 떨어질 수 밖에 없습니다.

하지만, 이번 1.4버전에서 크게 향상된 점이 있는데, 그것이 퍼포먼스 향상이더군요^^

jQuery 1.4 Released 에 Features(특징들)에 보면 가장 처음에 나오는 것이 Performance Overhaul of Popular Methods입니다.

Performance Overhaul of Popular Methods(인기있는 메소드의 성능점검)
초딩 영어실력으로 읽어보니 기존에 것을 분석해서 복잡도를 감소해 함수 호출 수를 줄인 것 같네요.
암튼, 결론은 더 빨라졌다는 거겠죠-_-

Easy Setter Functions(쉬운 Setter 함수)
기존에는 Setter에 그냥 string값 같은 것만 넣을 수 있었는데, 이제는 함수를 넣어서 처리할 수도 있네요.

Ajax
Ajax따위.....그냥 더 좋아진 듯-_-

Attribute
css()랑 attr()등의 함수의 성능이 향상된 듯. 그래플 보여주는데, 1.3.2와 1.4간의 차이가 거의 2배네요.

Core
쉬운 엘리먼트 생성이 가능해지네요. 생성과 동시에 css랑 event등을 추가할 수 있는 형태로 만들 수 있네요.
그 외에 함수가 추가되거나 바뀌거나 한 듯.

CSS
이것도 2개정도의 퍼포먼스 향상이 된 듯.

아.....바뀐게 디게 많네......하긴 1년을 개발했으니......-_-
암튼, 직접 가셔셔 보시는 게......더 좋을 듯....^^

ps. 이런 것을 만드는 천재분들 때문에 저 같은 하찮은 개발자들이 먹고 사는 것 같아요^^
 
Posted by 머드초보

댓글을 달아 주세요

  1. 좌절 2010.01.21 23:31  댓글주소  수정/삭제  댓글쓰기

    1.3.2에서 작동하던 놈이 1.4버전에서는 작동을 하지 않는게 많이 있습니다.
    현재로서는 문제가 많이 있습니다. 게다가 UI와 다른 플러그인과의 호환성도 떨어집니다.
    jquery 하나로만 볼 때는 성능상 문제가 없어보이지만, 이전 버전과의 호환성이
    너무 떨어져서 업그레이드를 할 수 없다는게 흠이죠.

    • 머드초보 2010.01.22 10:29  댓글주소  수정/삭제

      음 그렇군요 ㅠㅠ 호환성은 왜 신경안쓴거지.
      아직 까진 안정화가 덜 되어있군요 ㅠㅠ
      1.3.2처럼 0.0.2까지 올릴 때까지 기다려야하나요 ㅠㅠ
      방문해주셔서 감사해요~^^