2014년 1월 31일 금요일

[안드로이드 트레이닝]002_앱 실행

앱 실행하기
[프로젝트 생성하기] 내용을 따라했다면 당장 실행해 볼 수 있는 "Hello World" 소스 파일이 기본적으로 포함된 안드로이드 프로젝트가 생성되었을 것이다.

당신은 실제 안드로이드 디바이스나 이클립스를 이용한 두가지 방법으로 앱을 실행할 수 있다. 이번내용에는 당신의 앱을 실제 디바이스나 안드로이드 에뮬레이터에 어떻게 설치하고 실행하는 지를 보여준다.

앱 실행 전에, 당신은 안드로이드 프로젝트의 몇몇 파일과 디렉토리들을 알아야 한다.

  • AndroidManifest.xml
    • manifest 파일은 앱의 기본적인 특성과 콤포넌트 각각의 정의를 설명한다.
    • 가장 중요한 요소 중 하나로, manifest는 <uses-sdk> 요소를 포함해야 한다. 이 선언은 android:minSdkVersion과 android:targetSdkVersion 속성을 사용하여 다른 안드로이드 버전과의 당신의 앱이 호환되게 한다. 다음과 같이 하라.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
    ...
</manifest>
    • android:targetSdkVersion은 가능한한 높게 항상 설정해야하고 플랫폼 버전에 상응하는 앱을 검사해라.
  • src/
    • 앱의 주 소스 파일을 위한 디렉토리다. 기본적으로 앱이 아이콘 사용으로 실행되었을 때 수행하는 액티비티 클래스를 포함한다.
  • res/
      • 앱 리소스를 위한 몇몇의 보조 디렉토리를 포함한다.
    • drawable-hdpi/
      • 고 해상도(hdpi) 화면을 위해 설계된 그리기 가능한 객체를 위한 디렉토리다.
      • 다른 그리기 가능한 디렉토리는 다른 화면 해상도를 위해 디자인된 것들을 포함한다.
    • layout/
      • 앱의 인터페이스 정의 파일을 위한 디렉토리
    • values/
      • 문자열이나 색깔정의와 같은 리소스의 콜렉션을 포함하는 여러 XML 파일들을 위한 디렉토리

기본 안드로이드 앱을 빌드하고 실행할 때 기본 액티비티 클래스가 시작되고 레이아웃 파일이 로드되어 "Hello World"가 보여진다. 그 결과는 흥미롭지 않지만, 당신이 개발에 앞서 앱을  어떻게 실행하는지를 이해하는데 중요하다.


실제 디바이스에서 실행하기
  • USB 케이블을 이용하여 개발장비에 당신의 디바이스를 연결한다. 윈도우즈에서의 개발이라면 당신의 디바이스를 위한 적당한 USB 드라이버가 필요로 할 것이다.
  • 당신의 디바이스에서 USB 디버깅을 활성화한다.
    • 안드로이드 3.2나 더 오래된 버전에서 실행되는 대부분의 디바이스에서 [Settings > Applications > Development] 아래에서 찾을 수 있다.
    • 안드로이드 4.0이나 더 새로운 버전에서는 [Settings > Developer] 옵션에 있다.
    • 안드로이드 4.2나 더 새로운 버전에서 개발 옵션은 기본적으로 숨겨져있다. 그것을 유용하게 할려면, [Settings > About Phone]로 가서 빌드 번호를 7번 탭한다. 이전 화면으로 돌아가서 개발 옵션을 찾는다.
    • 갤럭시 노트 2에서 보니깐... [환경설정 > 더보기 > 디바이스 정보]에서 [빌드 번호]를 7번 탭한다. 이전화면으로 가서 [개발자 옵션]에 들어가면 [USB 디버깅] 항목이 있다.
  • 이클립스에서 앱을 실행하기는
    • 당신의 프로젝트 파일들을 열고 툴바의 [Run]을 클릭한다.
    • 팝업 창에서 [Run as]의 [Android Application]을 선택하고 [OK]를 클릭한다.
  • 이클립스는 연결된 당신의 디바이스에 앱을 설치하고 시작한다.
  • 커맨드 라인에서 앱 실행
    • root 디렉토리로 이동해서 실행한다.
      • ant debug
    • 당신의 환경변수 PATH에 포함된 안드로이드SDK platform-tools/ 디렉토리를 만들고, 실행하라
      • adb install bin/MyFirstApp-debug.apk
    • 당신의 디바이스에서 MyFirstActivity를 찾고 열어라.

에뮬레이터에서 실행하기
앱을 에뮬레이터에서 실행할려면 첫째로 Android Virtual Device(AVD)를 생성해야 할 것이다. AVD는 다른 디바이스 모델의 안드로이드 에뮬레이터를 위한 디바이스 구성이다.

  • AVD 생성하기
    • Android Virtual Device Manager를 실행
      • 이클립스에서 툴바의 Android Virtual Device Manager를 클릭
    • 이클립스에서 툴바의 Android Virtual Device Manager를 클릭
      • 커맨드 라인에서는 <sdk>/tools/ 로 디렉토리를 이동해서 실행한다.
        • android avd
    • Android Virtual Device Manager 창에서 [New]를 클릭한다.
    • 이름, 타겟 플랫폼, SD 카드 크기와 스킨의 AVD 상세항목을 채움
    • [Create AVD]를 클릭
    • Android Virtual Device Manager에서 새로운 AVD를 선택하고 [Start]를 클릭


    • 에뮬레이터 부팅이 끝나고 에뮬레이터 화면을 잠금해제한다.
  • 이클립스에서 앱을 실행하기는
    • 당신의 프로젝트 파일들을 열고 툴바의 [Run]을 클릭한다.
    • 팝업 창에서 [Run as]의 [Android Application]을 선택하고 [OK]를 클릭한다.
  • 이클립스는 연결된 당신의 디바이스에 앱을 설치하고 시작한다.
  • 커맨드 라인에서 앱 실행
    • root 디렉토리로 이동해서 실행한다.
      • ant debug
    • 당신의 환경변수 PATH에 포함된 안드로이드SDK platform-tools/ 디렉토리를 만들고, 실행하라
      • adb install bin/MyFirstApp-debug.apk
    • 당신의 디바이스에서 MyFirstActivity를 찾고 열어라.

2014년 1월 28일 화요일

[안드로이드 트레이닝]001_안드로이드 프로젝트 생성하기

안드로이드 프로젝트 생성하기
안드로이드 프로젝트는 당신의 안드로이드 앱을 위한 소스코드로 구성된 모든 파일을 포함한다. 안드로이드 SDK 툴은 기본 프로젝트 디렉토리와 폴더로 새로운 안드로이드 프로젝트 시작을 쉽게 만든다.
다음은 ADT 플러그인이 포함된 이클립스를 사용하거나 커맨드라인의 SDK 툴을 사용하여 각각 새로운 프로젝트를 생성하는지를 보여준다.

확인: 당신이 이클립스를 사용한다면 미리 안드로이드 SDK가 설치되어 있어야 한다. 또한 ADT 플러그인도 설치되어 있어야 한다. 만약 설치되어 있지 않다면 다음의 페이지를 따라 설치하기 바란다.
안드로이드 개발환경 구축하기:http://wooguystudy.blogspot.kr/2014/01/adt-140121.html

이클립스를 이용한 프로젝트 생성하기

1. 프로젝트 생성 시작
  • 툴바에서 [New] 클릭
  • 나타나는 창에서 [Android] 폴더 클릭, [Android Application Project] 선택, [Next] 클릭



  • 메뉴에서 새로 만들기
  • 위의 두 가지 방법으로 새로운 안드로이드 앱 프로젝트 생성 시작

2. 프로젝트 기본 설정

  • 위와 같이 Application Name 설정
    • My First App
  • Project Name은 프로젝트 디렉토리와 이클립스에서 보는 이름이다.
  • Package Name은 당신의 앱을 위한 패키지 네임스페이스이다.
    • 자바 프로그래밍 언어의 패키지와 같은 룰을 따른다.
    • 당신의 패키지 이름은 안드로이드 시스템에 설치된 모든 패키지들 중에서 유일해야 한다.
  • Minimum Required SDK는 당신의 앱이 지원하는 안드로이드 앱의 가장 낮은 버전이다.
  • Target SDK는 당신이 당신의 앱을 시험한 가장 높은 안드로이드 버전을 명시한다
  • Compile With는 당신의 앱을 컴파일 할 플랫폼 버전이다.
    • 기본적으로 이것은 당신의 SDK에서 사용가능한 안드로이드의 마지막 버전이다.

3. 계속하여 [Next]를 클릭하고 마지막 Page에서 [Finish]를 하여 마친다.
  • 다음 화면은 프로젝트 구성이다
  • 다음 화면은 실행 하이콘 생성을 돕는다
  • 액티비티 템플릿을 선택
  • 상세 액티비티에서 기본으로 놔두고 [Finish]로 마침

2014년 1월 25일 토요일

Windows8(윈도우8)에서 telnet(텔넷) 사용 방법

윈도우8에서 텔넷을 사용할려니 없더라...
그래서 기능을 활성화 했다.

제어판에서 [프로그램] 항목을 선택

[프로그램 및 기능]에서 [Windows 기능 켜기/끄기] 선택

아래와 같은 화면에서 [텔넷 클라이언트] 체크 하여 활성화

확인 누르면 알아서 설치하고

완료 되었다.

2014년 1월 21일 화요일

[안드로이드 트레이닝]000_안드로이드 개발환경 구축하기 (ADT 번들) - 작성일:140121

안드로이드 개발환경 구축하기
안드로이드 개발환경은 시간이 지남에 따라 점점 더 쉬워지고 간편해지고 IDE 환경이 강력해지고 있다. 안드로이드 사이트에 보면 개발환경 구축과 관련하여 내용이 잘 나와 있으나 내가 공부하면서 걍 정리하는거니 참고만 하시길 바란다.
작성일인 2014년 01월 21일 오늘을 기준으로 작성되므로 시간이 지나면 변경될 수 있다.
환경 : OS - Windows7 64비트

SDK 다운로드
개발을 위해서는 안드로이드 웹 사이트에서 SDK를 다운받아야 한다.
www.android.com 에 접속하여 개발자 페이지로 넘어가 SDK를 다운 받자.

www.android.com 페이지 접속 후 개발자 페이지로 이동

개발자 페이지에서 SDK를 다운받기 위한 페이지로 이동

기본 SDK로는 ADT를 많이 사용한다

플랫폼에 맞는 ADT 파일을 다운받자

다운 받은 파일을 확인한다

SDK와 이클립스IDE 설치
  1. 다운받은 ZIP 파일(adt-bundle-windows-x86_64-20131030.zip)의 압축을 해제하고, 당신의 기본 폴더에 "Development" 폴더 같은 적당한 위치에 저장을 한다.
  2. adt-bundle-<os_platform>/eclipse/ 폴더(adt-bundle-windows-x86_64-20131030)를 열고 eclipse.exe 파일을 실행한다.
이클립스 실행

JRE가 설치되지 않았으면 메시지 알림



JDK 다운 및 설치
JDK 다운을 위해 www.sun.com 에 접속한다.

상단 [Downloads] 탭에 마우스를 올린 후 좌측의 [Java for Developers]를 클릭한다.

Java SE Downloads 페이지에서 아래로 이동한다.

[JDK] 다운로드를 클릭한다.

Java SE Development Kit인 것을 확인하고 라이센스 동의 후 플랫폼에 맞는 JDK를 다운로드 한다.

다운로드 한 파일을 확인하고 더블클릭하여 설치 시작

JDK와 JRE를 설치한다.






JDK 설치가 완료되었다.


이클립스 실행
adt-bundle-<os_platform>/eclipse/ 폴더(adt-bundle-windows-x86_64-20131030)를 열고 eclipse.exe 파일을 실행한다.
정상적으로 실행이 되면 다음과 같은 화면으로 진행된다.

처음 실행 시 Work Space를 설정하는 화면이 나온다.
Work Space는 안드로이드 앱을 개발하기 위해 프로젝트를 생성하면 여기서 설정하는 폴더 아래에 기본적으로 프로젝트 폴더가 생성된다.

정보를 구글에 보낼꺼냐? 왠만하면 No 하는게 나을 듯 하다.

IDE가 성공적으로 실행되었다.


***** 주의 1
adt-bundle-<os_platform>/eclipse/ 폴더(adt-bundle-windows-x86_64-20131030) 의 어떤 파일도 경로나 파일명을 바꾸어서는 안된다.

***** 주의 2
Failed to load the JNI shared library "C:\Program Files ~ \bin\client\jvm.dll" 이클립스 오류
이와 같은 경고가 발생하는 것은 이클립스와 JRE의 플랫폼 버전이 맞지 않아서이다.
둘다 32비트로 하거나 둘다 64비트로 맞추어 주어야 한다.

***** 주의 3
JDK나 JRE를 설치해 주었는데도 다음과 같은 알림과 함께 실행이 되지 않는 경우
이클립스 실행시 다음과 같은 메시지와 함께 실행 안됨
A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. No Java virtual machine was found after searching the following locations: C:\adt-bundle-버전\eclipse\jre\bin\javaw.exe javaw.exe in your current PATH
경로 설정이 되지 않아서 문제가 발생할 수도 있다. 그런 경우 다음과 같이 조치 해 본다.

1. 환경변수에 JAVA_HOME 항목 추가
[제어판] - [시스템 및 보안] - [시스템]  에서 [고급 시스템 설정] 실행
바탕화면의 [내컴퓨터] 우클릭 후 [속성] 실행과 같음

[환경 변수] 클릭

[시스템 변수] 부분에 JAVA_HOME 항목 처리
변수 이름 : JAVA_HOME
변수 값 : C:\Program Files\Java\jre7 (설치된 폴더 - 64비트의 경우)
              C:\Program Files (x86)\Java\jre7 (32비트의 경우)

위와 같이 변경하거나 추가해준다.

2. 환경 변수 PATH 항목 수정
PATH 항목 처리

제일 뒤에 %JAVA_HOME%\bin; 을 추가해 준다.

위의 방법을 통하여 기본적인 안드로이드 앱 개발 IDE 환경은 구축이 되었다.

2014년 1월 7일 화요일

RF Constants

이 콘스탄트들은 NM_CUSTOMDRAW 통지 코드를 위한 응답의 컨트롤 반환값에 사용된다.
Constant/value 설명
CDRF_DODEFAULT
0x00000000
컨트롤은 스스로 그릴 것이다.
그것은 이 그리기 주기를 위한 어떤 추가적인 NM_CUSTOMDRAW 통지 코드도 보내지 않을 것이다.
이것은 NMCUSTOMDRAW 구조체의 dwDrawStage가 CDDS_PREPAINT와 같을 때 발생한다.
CDRF_NEWFONT
0x00000002
응용프로그램은 항목을 위한 새로운 폰트로 특징된다; 컨트롤은 새로운 폰트를 사용할 것이다.
폰트 변경에 대한 더 많은 정보를 위해 폰트와 색깔 변경을 보라.
이것은 NMCUSTOMDRAW 구조체의 dwDrawStage가 CDDS_ITEMPREPAINT와 같을 때 발생한다.
CDRF_SKIPDEFAULT
0x00000004
응용프로그램은 수동적이게 항목을 그렸다.
컨트롤은 항목을 그리지 않을 것이다.
이것은 NMCUSTOMDRAW 구조체의 dwDrawStage가 CDDS_ITEMPREPAINT와 같을 때 발생한다.
CDRF_DOERASE
0x00000008
윈도우즈 비스타나 그 이후. 컨트롤을 백그라운드를 그릴 것이다.
CDRF_NOTIFYPOSTPAINT
0x00000010
컨트롤은 항목을 그린 후 부모에게 통지할 것이다.
이것은 NMCUSTOMDRAW 구조체의 dwDrawStage가 CDDS_PREPAINT와 같을 때 발생한다.
CDRF_NOTIFYITEMDRAW
0x00000020
컨틀로은 항목과 관계된 어떤 그리기 운용의 부모에게 통지할 것이다.
그것은 항목을 그리기 전이나 후에 NM_CUSTOMDRAW 통지 코드를 보낼 것이다.
이것은 NMCUSTOMDRAW 구조체의 dwDrawStage가 CDDS_PREPAINT와 같을 때 발생한다.
CDRF_NOTIFYSUBITEMDRAW
0x00000020
인터넷 익스플로러 4.0이나 그 이후.
CDRF_NOTIFYPOSTERASE
0x00000040
컨트롤은 항목 지우기 후 부모에게 통지할 것이다.
이것은 NMCUSTOMDRAW 구조체의 dwDrawStage가 CDDS_PREPAINT와 같을 때 발생한다.
CDRF_SKIPPOSTPAINT
0x00000100
윈도우 비스타나 그 이후. 컨트롤은 초점 사각을 그리지 않을 것이다.

주의
이 콘스탄트들은 Commctrl.h 안에 정의되어져 있다.

요구사항

  • Header
    • CommCtrl.h

NMCUSTOMDRAW 구조체

NM_CUSTOMDRAW 알림 코드에 대한 정보 명세를 포함.

문법
C++
typedef struct tagNMCUSTOMDRAWINFO {
  NMHDR         hdr;
  DWORD         dwDrawStage;
  HDC              hdc;
  RECT            rc;
  DWORD_PTR dwItemSpec;
  UINT             uItemState;
  LPARAM        lItemlParam;
} NMCUSTOMDRAW, *LPNMCUSTOMDRAW

멤버

  • hdr
    • Type : NMHDR
    • NMHDR 구조체는 이 통지 코드에 대한 정보를 포함한다.
  • dwDrawStage
    • Type : DWORD
    • 현재 그리고 있는 단계. 이것은 다음의 값들 중 하나이다.
의미
전역 값 :
CDDS_POSTERASE 지우기 주기가 완료된 후
CDDS_POSTPAINT 그리기 주기가 완료된 후
CDDS_PREERASE 지우기 주기가 시작되기 전
CDDS_PREPAINT 그리기 주기가 시작되기 전
항목 특징 값 :
CDDS_ITEM dwItemSpec, uItemState, lItemlParam 멤버가 유효함을 암시
CDDS_ITEMPOSTERASE 항목이 지워진 후
CDDS_ITEMPOSTPAINT 항목이 그려진 후
CDDS_ITEMPREERASE 항목이 지워지기 전
CDDS_ITEMPREPAINT 항목이 그려지기 전
CDDS_SUBITEM 버전 4.71. 플래그는 부 항목이 그려지고 있다면 CDDS_ITEMPREPAINT 또는 CDDS_ITEMPOSTPAINT와 결합된다.
이것은 CDRF_NOTIFYITEMDRAW가 CDDS_PREPAINT로부터 반환된다면 오직 설정될 것이다.


  • hdc
    • Type : HDC
    • 컨트롤의 디바이스 컨텍스트의 핸들. GDI 함수를 수행하는 데 이 HDC를 사용
  • rc
    • Type : RECT
    • RECT 구조체는 그려지고 있는 영역의 사각영역을 묘사한다. 이 멤버는 CDDS_ITEMPREPAINT 통지에 의해서만 초기화 된다.
    • 버전 5.80. 이 멤버는 CDDS_PREPAINT 통지에 의해서도 초기화된다.
  • dwItemSpec
    • Type : DWORD_PTR
    • 항목 번호. 이 멤버에 포함되는 항목은 컨트롤의 타입에 의존할 것이다. NM_CUSTOMDRAW 통지는 이 멤버에 포함되는 어떤것이든지 결정을 위한 특징 제어를 위해 참조한다.
  • uItemState
    • Type : UINT
    • 현재 항목 상태. 이 값은 다음의 플래그의 합동체이다.
의미
CDIS_CHECKED 항목이 체크됨
CDIS_DEFAULT 항목이 그것의 기본 상태에 있음
CDIS_DISABLED 항목이 비활성임
CDIS_FOCUS 항목이 초점됨
CDIS_GRAYED 항목이 잿빛이됨
CDIS_HOT 항목이 현재 마우스 포인터 아래에 있음
CDIS_INDETERMINATE 항목이 마크 됨. 이 뜻은 수행에 의해 결정됨
CDIS_SELECTED 항목이 선택됨
CDIS_SHOWKEYBOARDCUES 버전 6.0. 항목이 그것의 키보드 팁이 보여지고 있음.
CDIS_NEARHOT 항목은 현재 마우스 포인터 아래에 있는 컨트롤의 부분이지만, 그 항목 자신은 HOT 상태가 아니다.
이 의미는 수행에 의해 결정된다.
CDIS_OTHERSIDEHOT 항목은 현재 마우스 포인터 아래에 있는 나눔버튼의 부분이지만, 그 항목 자신은 HOT 상태가 아니다.
이 의미는 수행에 의해 결정된다.
CDIS_DROPHILITED 항목이 현재 드래그 앤 드롭 수행의 드롭 대상이다.

  • lItemlParam
    • Type : LPARAM
    • 응용프로그램 정의된 항목 데이터.


주의사항
당신의 응용프로그램의 값은 현재 drawing stage에 의존하여 반환한다.
조합된 NMCUSTOMDRAW 구조체의 dwDrawStage 멤버는 drawing stage 특징값을 소유한다.
dwDrawStage 멤버가 CDDS_PREPAINT와 CDDS_PREERASE와 같을 때 일부 컨트롤은 CDDS_PREERASE 메시지를 처음으로 보내고 직후 메시지가 보내질 암시 값을 기대한다.