안녕하세요 회색입니다. 이번 강좌에서는 작성된 프로젝트의 실행과 디버깅을 해보고 실제 단말 연결까지 해보도록 하겠습니다.
안드로이드 강좌 3 - 프로젝트 실행과 디버깅 그리고 단말 세팅
Activity 실행
메뉴에서 Run/Run Configurations 실행
Android Application에서 오른쪽 마우스 클릭후 New 선택
Name: New_configuration 을 프로젝트에 맞게 변경
Project : Browse후 해당 Project선택
Launch Action : Run시 실행할 Activity를 선택합니다.
(그림 3-1)
새로 작성한 Activity를 실행해 보기 위해서 Launch를 선택하고 List에서 새로생성한 MyActivity를 선택합니다.
Apply 후 Run을 실행하면 Emulator가 아직 떠있지 않다면 자동으로 실행합니다. Emulator는 한번 생성해 놓으면 매번 프로그램을 실행할때 마다 다시 시작시킬필요없이 재사용될 수 있습니다.
Run을 하게 되면 자동으로 Emulator에 이전에 인스톨되어있던 프로그램을 언인스톨하고 새로 작성된 프로그램을 인스톨한 후 선택한 Activity로 실행하여 줍니다.
(그림 3-2)
에뮬레이터를 처음 실행하였을 때 (그림 3-2)와 같은 화면이 나오는데 MENU라고 써져 있는 부분을 클릭하면 프로그램 화면을 볼 수 있습니다. 정상적으로 실행이 되었다면 에뮬레이터에 myactivity.xml에서 작성해주었던 "안녕하세요 모바일 플레이스 안드로이드 강좌 수강생 여러분" 라는 문구가 나타납니다.
(그림 3-3)
다시 프로그램을 실행시킬 때에는 (그림 3-3)에 표시된 아이콘을 누른 후 생성한 Configuration을 선택하면 됩니다.
디버깅
소스 에디터의 왼쪽 부분을 더블 클릭하면 해당 위치에 브레이크 포인트가 설정됩니다. 브레이크 포인트가 설정된 지점에 작은 동그라미가 표시됩니다.
(그림 3-4)
그럼 이제 디버깅 모드로 프로그램을 실행시켜보도록 하겠습니다. (그림 3-5)에 표시된 벌레 모양 아이콘이 디버깅을 위한 실행 버튼입니다.
(그림 3-5)
다이얼로그 창이 뜨는데 확인을 누르면 이클립스가 디버그 상태로 전환됩니다. 이것을 Debug Perspective로 전환되었다고 합니다. 그리고 아까 잡아주었던 브레이크 포인트에 현재 실행이 멈추어 있는 것을 확인할 수 있습니다.
(그림 3-6)
Step Into (F5) : 메서드 속으로 들어가서 실행
Step Over (F6) : 한줄 실행
등 디버깅과 관련된 명령과 아이콘의 모양은 메뉴의 Run에서 확인하실 수 있습니다.
Perspective
소스 변경화면과 디버깅 화면등의 Perspective 전환은 오른쪽 위화면에서 각각 Java와 Debug의 클릭으로 가능합니다.
(그림 3-7)
안드로이드 개발시 또하나의 유용한 Perspective가 있는데 바로 DDMS입니다. 메뉴의 Windows/Open Perspective에서 DDMS를 선택하면 열수 있습니다. (바로 보이지 않는다면 Other를 클릭하면 선택하실 수 있습니다.)
(그림 3-8)
DDMS Perspective에서는 현재 에뮬레이터 및 단말의 프로세스, 쓰레드, 힙, 파일등의 다양한 정보를 확인할 수 있습니다. 또한 에뮬레이터에서 SMS, 전화, GPS 등을 시뮬레이션할 수도 있습니다.
로그캣
저번 강좌에서 소스에 Log.d("MyTag", "Print Test Log"); 라는 코드를 넣었습니다. 이것은 개발할때 필요한 로그를 출력해주는 역할을 합니다. 디버깅 혹은 DDMS 화면 밑 부분에 LogCat이라는 영역에서 로그를 확인하실 수 있습니다. Print Test Log라고 찍힌 부분을 확인하실 수 있습니다.
(그림 3-9)
그런데 로그가 너무 많이 나와서 복잡합니다. 작성한 어플리케이션에서 나오는 메시지만을 따로 확인하기 위해서 필터를 적용할 수 있습니다. Log.d함수의 첫번째 인자인 Tag부분을 이용해서 가능합니다. 녹색 + 모양을 눌러 Filter를 생성합니다.
(그림 3-10)
Log Filter라는 창에서 Filter Name은 적당히 적은 후, 따로 메시지를 확인할 Tag부분을 "MyTag"로 적어서 OK를 합니다.
(그림 3-11)
이제 LogCat창안에 새로운 필터 탭이 생겨서 MyTag라는 Tag를 가지는 메시지는 따로 분류해서 보여줍니다.
(그림 3-12)
단말 디버깅
안드로이드 실제 단말을 통한 개발은 몇가지 설정만 해준다면 에뮬레이터를 통한 개발과 크게 다르지 않습니다.
단말 상에서 Settings를 실행 Applications/Development로 들어가서 USB debugging과 Stay awake를 체크해줍니다.
그런 후 단말을 USB케이블을 통해서 PC연결해주면 새로운 장치를 찾았다며 드라이버를 설치하라는 화면이 나옵니다.
드라이버는 SDK가 설치된 폴더 밑에 usb_driver라는 폴더에 저장되어있습니다. (1.0 SDK Release2에서 부터 포함되서 나왔습니다.)
정상적으로 드라이버가 설치되었다면 DDMS화면의 왼쪽 윗부분 Devices화면에 Emulator가 아닌 실제 장치가 표시됩니다.
(그림 3-13)
실제 단말상에서 개발시 소스 상에서 추가해줘야 하는 부분이 하나 있습니다. AndroidManifest.xml에 application 태그에서 android:debuggable="true"를 추가해주어야 합니다. 만약 설정해주지 않는다면 Wating For Debugger화면에서 더 이상 진행되지 않습니다.
(그림 3-14)
debuggable tag는 개발시에 넣어두고 실제 릴리즈시에는 삭제해주는 것이 좋습니다. 이제 모든 설정이 끝났고 실제 단말에서도 에뮬레이터에서 디버깅을 하는 것과 동일하게 개발을 하실 수 있습니다.
이번 강좌에서는 안드로이드 개발과 디버깅을 위한 이클립스의 사용법과 단말 세팅까지 살펴보았습니다. 이제 이클립스에 환경과 기본적인 프로젝트 구성에 익숙해지셨을 테니 다음 강좌 부터는 본격적인 개발에 들어가 보도록 하겠습니다.
- lecture3-14.JPG (29.2KB)(357)
- lecture3-1.JPG (63.1KB)(391)
- lecture3-2.JPG (14.6KB)(70)
- lecture3-3.JPG (38.3KB)(57)
- lecture3-4.JPG (48.9KB)(55)
- lecture3-5.JPG (40.9KB)(43)
- lecture3-6.JPG (142.6KB)(46)
- lecture3-7.JPG (8.0KB)(48)
- lecture3-8.JPG (25.6KB)(42)
- lecture3-9.JPG (54.2KB)(55)
- lecture3-10.JPG (56.2KB)(52)
- lecture3-11.JPG (17.3KB)(66)
- lecture3-12.JPG (26.4KB)(54)
- lecture3-13.JPG (9.2KB)(84)
알고보니 로딩화면이었다는... 그냥 기다리니 화면뜨고 HELLO WORLD 화면이 나옴.....
어헣헣.... 이놈의 삽질로 몇시간이나 날려먹은겐가...
다른사람들은 이런삽질 하지않기를...
하지만 저같은경우에는
Log.d(“MyTag”, “Print Test Log”);
이부분을 넣고 빨간부분에 소스->인포트 시켜서
import android.util.Log;
이부분이 들어갔음에도 불과하고
Multiple markers at this line
- Log.d cannot be resolved
- Syntax error, insert "AssignmentOperator Expression" to
complete Assignment
- Syntax error, insert ";" to complete Statement
이런 에러가 납니다
cannot be resolved 똑같이 따라했는데 그부분만 안되는데요;;;
그부분 빼고 디버깅하면 잘나오긴하는데 로그부분이 왜 안되는지 잘모르겠습니다 도움말좀 부탁드리겠습니다 ^^;;
"ANDROID"라는 글씨 밖에 나타나지 않구요.
좀 도와주세요 ^^
emulator-5554 disconnected! Cancelling 'kr.mobilepace.lecture.main activity launch'!
MobilePlace Lecture]Error in an XML file: aborting build.
모토로이 연결하고, 디버그 모드로 돌리면 어떤때는 브레이크 포인트까지 잘 넘어 오는데,
어떤때는 모토로이에 "Waiting For Debugger" 란 창 뜨고는 디버거 연결이 안되요(이클립스도 디버그 화면으로 안 바뀌고)
이클립스 껏다 다시 하거나, 모토로이 껏다 다시 하면 또 디버깅 되기도 하고,
어떤때는 둘다 껏다 켜도 안되고.... 그러는데..
이유가 뭘까요 ㅠㅠ
이라고 에러나오는데...어떤 부분을 추가, 수정해야 하나요??
단말에서 디버그 모드로 설정도 되어 있고, 단말에서 USB 디버깅 상태라고 나오고 USB driver도 설치가 잘 되어 있는데요...
command 명령으로 "adb devices"라고 해도 emulator 밖에 안 나옵니다...
쩝... 어찌해야 할지요...~~
두 대의 PC에서 해 봤는데 같은 현상입니다...
[2010-05-19 22:11:51 - MobilePlace Lecture] Device API version is 7 (Android 2.1)
안녕하세요 이번에 안드로이드 프로그래밍을 시작한 공대 4학년학생입니다.
제가 설치에서부터 강의 3장까지 회색님의 도움을 받아 여기까지 왔는데요.
처음에 AVD설정했을때 뭐가 잘못됐는지 매 실행때마다 이런 오류가 나네요. 또 그러면서 에뮬레이터에도 'ANDROID'라는 글자만 뜨고
다른 메시지가 나오게 프로그래밍해도 계속 이 글자만 뜨더군요. 뭐가 문제인지 알려주세요
위에 메시지는 프로젝트 셋팅할때 Min SDK version 을 스킵했을 경우 나타나더군요~
대부분 무시했었는데, 누군가 Level 4 이상 사용시 - 현재는 거의 7 or 8 사용하시는 경우가 많아서 - 버전을 꼭 명시해주는 것이
난중에 디바이스에서 해상도 문제가 안생긴다고 하더군요, 뭐 에뮬 환경에서야 상관없겠지만서도...
결론은 메시지가 안나오는 문제랑 워닝은 관계 없다는 거고, 메시지가 안나온다면 Android 글자 뜰 때 에뮬에서 메뉴 버튼 한번 눌러주세요
그럼 님이 지정한 메시지가 나올겁니다. 저도 공부하믄서 하기 때문에 왜 그런지는 아직까지 이유를 모르겠네요
알게되면 또 올리지요..즐공~!!
Manifest.xml 파일에 최소 요구사항의 SDK 버전을 적어주지 않아서 그렇습니다.
해당 파일을 열고 <manifest> 태그 안에 아래와 같이 추가하시면 됩니다.
<uses-sdk android:minSdkVersion="API LEVEL 을 적어주세요" />
질문하신 분의 로그를 봤을때 "Device API version is 7 " 라고 나왔으니 minSdkVersion="7" 이라 하시면 되겠습니다.
아래는 API Level이니 참고하시기 바랍니다.
Platform Version API Level
Android 2.2 | 8 |
Android 2.1 | 7 |
이해는되는데 오류가나네여..
런들어가면
우선 An error has occurred. See error log for more details.
오류메시지 뜨고 런치설정화면 나오는데..
엑티비티에 런처 실행할때 마이엑티브티가 나오지않네여..못찾습니다 어떻게해야하나여..
참고로 폰을 꽂아 놓고 이글립스 설치부터 쭉 했는데...
왜 나의 에뮬은 안뜨나 했더니... 폰으로 뜨고 작업한게 바로 바로 뜨고 있었다는 사실 -0-;
강의를 보면서 따라하고 잇는 완전 쌩 초보 입니다..^^
강의 너무 잘 되어 있어서 잘 보고 있는데요
저는 탭으로 지금 테스트를 하는데..ㅠ.ㅠ
안드로이드 메니져로는 사이즈를 줄여서 실행을 해 볼수 있는데
그냥 run 을 하면...탭이 완전 항공모함으로 나와서...ㅋㅋ 노트북에서 전체 사이즈를 볼 수가 없네요
이거 사이즈 작에 run 할 수 있는 방법이 없나요?
도와 주세요..ㅠ.ㅠ
이런 오류가 납니다 ㅠㅠ M110 어쩌구는 핸드폰 종을 말하는거 같은데
왜 저런 오류가 나는지 모르겠네요 ㅠㅠ 아시는분 답변 부탁드립니다!!!!
[2010-12-23 00:19:55 - MobilePlace Lecture2] Device 'M1104d6d57e4' requires that applications explicitely declare themselves as debuggable in their manifest.
[2010-12-23 00:19:55 - MobilePlace Lecture2] Application 'kr.mobileplace.lecture' does not have the attribute 'debuggable' set to TRUE in its manifest and cannot be debugged.