Android Training Course : App. Developer (제1기 수강생 모집) - 주최 : www.kandroid.org - 교육 프로그램 개요 일시 장소 수용인원 준비물 H/W 준비물 S/W 강사 대상 수강료 연락처 2009년 4월 20일(월) ~ 4월 24일(금), 오전 9시 ~ 오후 4시 JSCampus (역삼역 1번 출구 신웅타워 15층) 30명 노트북 (만약 개인 노트북이 없으신 분들은, 노트북을 임대받아서 사용하실 수 있습 니다. 노트북 임대비용은 55,000원(임대기간 5일, 수량 1대 기준, VAT 포함)이 며, 수강신청하기의 결제화면에서 노트북임대를 선택하시면 교육장에 비치된 노트북을 사용하실 수 있습니다. 하지만, 가급적 본인이 사용하시던 노트북을 가져오셔서 교육을 받을 것을 권장드립니다.) Android SDK, JDK 5 or 6, Eclipse Classic 3.4.1, ADT, Eclipse SVN Plug-in www.kandroid.org 운영자, 양정수 (닉네임:들풀) 안드로이드 애플리케이션 개발자 550,000원 (부가세포함/강의자료집제공/중식제공) 양정수 (yangjeongsoo@gmail.com, Tel : 02-2050-0225, Fax : 02-2050-0226) 교육 프로그램 내용 일자 오전(3시간) 오후(3시간) 월 4월20일 Android Basic Application Fundamentals 화 4월21일 User Interface 수 4월22일 목 4월23일 금 4월24일 Data Storage Content Providers Security and Permissions 2D Graphics 3D with OpenGL AIDL Publishing Best Practices Resources and Assets Intents and Intent Filtering AndroidManifest.xml Audio and Video Location Development Android Source Code Review 교육 후기 발표 및 저녁식사
제1강. Android Basic 안드로이드 교육과정 이해를 위한 준비 Java에 대해서 알아야 할 몇 가지 기초지식 안드로이드 SDK 사용법 개요 Eclipse 개발 툴 사용법 안드로이드 에뮬레이터 내부 안드로이드 히스토리 안드로이드에 대한 정의 주요 특징들 아키텍쳐 애플리케이션 프레임워크 라이브러리 안드로이드 런타임 달빅 가상머신 코아 라이브러리 리눅스 커널 안드로이드 구동 메커니즘 이해 리눅스 구동 안드로이드 구동 자이고트(Zygote) 초기 프로세스 초기 프로세스 분류 애플리케이션 프로세스 시스템 서버 퍼시스턴트(Persistent) 애플리케이션 최초의 액티비티 Intent.CATEGORY_HOME Intent.ACTION_BOOT_COMPLETED 애플리케이션 프로세스 내부 안드로이드 소스코드 빌드 및 테스트 리눅스 우분투 패키지 설치 안드로이드 소스 코드 빌드 환경 설정 소스코드 다운로드, git 와 repo 안드로이드 빌드, toolchain 과 빌드 script 안드로이드 기반 리눅스 커널 빌드 안드로이드 빌드 테스트
제2강. Application Fundamentals 애플리케이션 컴포넌트 안드로이드 애플리케이션 개발 프로세스 에뮬레이터 내부 애플리케이션 개요 애플리케이션 빌딩 블록 인텐트 액티비티, 프로세스,태스크 애플리케이션 구성요소 안드로이드 매니페스트 액티비티 개념 및 스켈레톤 서비스 개념 및 스켈레톤 브로드캐스트 리시버 개념 및 스켈레톤 컨텐트 프로바이더 개념 및 스켈레톤 컴포넌트 활성화 및 종료 인텐트 개념 및 스켈레톤 컴포넌트 종료 안드로이드 매니페스트 재고찰 엘리먼트 계층구조 인텐트 필터 액티비티,태스크,쓰레드,프로세스,생명주기 액티비티,태스크,쓰레드,프로세스 개념 정의 액티비티와 태스크간의 상관관계 프로세스에 대한 이해 쓰레드에 대한 이해 리모트(remote) 프로시저 호출 쓰레드 세이프(Thread-safe) 메쏘드(method) 생명주기 액티비티 생명주기 서비스 생명주기 브로드캐스트 리시버 생명주기 컨텐트 프로바이더 생명주기 프로세스와 생명주기 및 우선순위 프로세스 생명주기와 리눅스 커널간의 관계
제3강 - User Interface 뷰 계층구조 이해 뷰에 대한 이해 뷰 그룹에 대한 이해 위젯에 대한 이해 레이아웃 정의 방법 XML 기반의 UI 엘리먼트를 통한 정의 런타임에서 레이아웃 엘리먼트의 생성 레이아웃(layout) XML XML 작성법 XML 리소스와 코드와의 결합 ID 애트리뷰트 개념 레이아웃 파마메터 애트리뷰트 레이아웃 포지션 개념 메뉴 사용법 옵션 메뉴 아이콘 매뉴 확장 메뉴 컨텍스트 메뉴 서브 메뉴 일반적 레이아웃 오브젝트 프레임(Frame) 레이아웃 리니어(Linear) 레이아웃 테이블(Table) 레이아웃 앱솔루트(Absolute) 레이아웃 랠러티브(Relative) 레이아웃 갤러리(Gallery) 그리드뷰(GridView) 리스트뷰(ListView) 스크롤뷰(ScrollView) 스피너(Spinner) 서피스뷰(SurfaceView) 탭호스트(TabHost) 뷰플리퍼(ViewFlipper) 뷰스위쳐(ViewSwitcher) 어댑터뷰(AdapterView)와 데이터 바인딩 레이아웃과 동적데이타 추가 어탭터에 대한 이해 및 어탭터 오브젝트들 리스트뷰(ListView) 예제 리트스뷰와 어레이(Array) 데이터 리스트뷰와 열(Row) 리스트뷰와 아이템 선택 이벤트 처리 사용자 이벤트 제어 사용자 이벤트 개요 사용자 이벤트 종류 스타일과 테마 사용하기 스타일 사용법 테마 사용법 뷰 컴포넌트 제작방법 기본적 접근법 완전하게 커스터마이즈된 컴포넌트 조합된 컨트롤들 이미 존재하는 뷰타입 수정하기 안드로이드 내부의 뷰 드로잉 메커니즘
제4강 - Resources, Assets, Intent (Filtering) 리소스와 에셋 리소스와 에셋 기본 개념 및 차이 리소스와 다국어 처리 리소스 하위폴더 이해 애니메이션(animation) tween, frame 드로어블(drawable) bitmap, color, shape, 9-patch 레이아웃(layout) 값(values) array, color, dimens, strings, styles XML(xml) 메뉴(menu) 원시리소스(raw) 리소스 사용법 코드내에서 리소스 호출법 리소스들간의 참조 리소스 선택구조 지원을 위한 설정 언어,지역,스크린방향,스크린픽셀 밀도, 터치유형,키보드입력상태, 텍스트입력방식, 터치스크린 이외의 네비게이션 방식, 스크린 해상도 리소스 선택구조 지원시 매칭 방식 인텐트와 인텐트 필터 애플리케이션 컴포넌트 호출방법들 인텐트 오브젝트의 구성 컴포넌트명 Action Data Category Extra Flag 인텐트 확정 인텐트 종류(명시적,암시적) 암시적 인턴트와 인텐트 오브젝트간 연관성 암시적 인텐트 확정과 인턴트 필터 인턴트 필터와 Category 테스트 인텐트 필터와 Action 테스트 인텐트 필터와 Data 테스트 인텐트 확정 규칙 인텐트 필터 사용에 대한 일반적 예시 인턴트 매칭 사용법 인텐트 사용가능유무 체크방법
제5강 - Data Stroage, Content Providers, Security and Permissions 데이터 저장공간 데이터 저장공간 개요 설정정보 저장 파일시스템 데이타베이스 네트워크 컨텐트 프로바이더 컨텐트 프로바이더와 컨텐트 리졸버(Resolver) 컨텐트 프로바이더 개요 데이터 모델 URI 컨텐트 리졸버(Resolver) 질의(Query) 이해 질의 생성 질의 및 결과반환 결과 데이터 읽어오기 데이터 수정하기 신규 레코드 생성 기존 레코드에 신규 값 추가 기존 레코드에 대한 배치 업테이트 레코드 삭제 컨텐트 프로바이더 컨텐트 프로바이더 생성 컨텐트 프로바이더 선언 컨텐트 URI 구조 정리 보안 및 퍼미션 보안 및 퍼미션 구조 개요 보안 아케텍쳐 애플리케이션 사인닝(Signing) User ID와 파일 접근권한 퍼미션 사용법 퍼미션 선언 및 강제 퍼미션 프로텍션(protection) 레벨 컴포넌트별 퍼미션 설정 액티비티 퍼미션 서비스 퍼미션 브로드캐스트 리시버 퍼미션 컨텐트 프로바이더 퍼미션 기타 퍼미션 강제방식 URI 퍼미션
제6강 - AndroidManifest.xml 매니페스트 개요 매니페스트 파일 구조 이해 매니페스트 파일 작성 규약 엘리먼트 규약 애트리뷰트 규약 클래스명 선언 다중 값 지정 규약 리소스 값 지정 규약 스트링 값 지정 규약 매니페스트 파일 특징 엘리먼트 상세 설명 manifest 엘리먼트 퍼미션 선언 및 사용법 uses-permission 엘리먼트 permission 엘리먼트 permission-group 엘리먼트 permission-tree 엘리먼트 애플리이션 테스트 및 벤치마킹 방법 instrumentation엘리먼트 라이브러리 작성 및 사용법 uses-library 엘리먼트 안드로이드 SDK 버전 의존성 uses-sdk 엘리먼트 안드로이드 애플리케이션 정의 application 엘리먼트 activity 엘리먼트 receiver 엘리먼트 service 엘리먼트 intent-filter 엘리먼트 action 엘리먼트 category 엘리먼트 data 엘리먼트 provider 엘리먼트 grant-uri-permission 엘리먼트 meta-data 엘리먼트
제7강 - Graphics, 2D and 3D with OpenGL 그래픽 일반 안드로이드 그래픽 개요 2D 그랙픽을 표현하는 두가지 방법 레이아웃의 뷰 오브젝트를 사용하기 캔버스에 직접 그리기 뷰에서 사용가능한 그래픽 표현 캔버스에 그리기 캔버스에 대한 정의 뷰(View)와 서피스뷰(SurfaceView)에 대한 이해 뷰를 이용한 그리기 방법 서피스뷰를 이용한 그리기 방법 2D 그래픽 안드로이드 2D 그래픽 라이브러리 개요 드로어블(Drawables) 리소스 이미지 사용법 XML 파일 사용법 클래스 생성자 사용법 쉐이프 드로어블(ShapeDrawable) 9-패치 드로어블(NinePatchDrawable) 트윈(Tween) 애니메이션 프레임(Frame) 애니메이션 OpenGL 기반 3D OpenGL ES 개요 안드로이드 OpenGL ES 표준 준수 개요 3D 그래픽 일반적 기초 안드로이드 3D 그래픽 기초 Surface, SurfaceView, Canvas, SurfaceHolder, SurfaceHolder.Callback, Thread, Canvas OpenGL ES 예제 스켈레톤 서피스뷰 기반 액티비티 생성 서피스홀더 콜백 메쏘드 구현 서피스뷰 전용 쓰레드 생성 쓰레드 관리 3D 모델 생성 빛,카메라 등등 모델 움직임 처리 텍스처 적용 투명처리 등 기타.
제8강 - Audio & Video, Location, Dev. Tools 오디오와 비디오 안드로이드 오디오와 비디오 특성 개요 안드로이드 미디어 지원 포맷 T-모바일 G1 미디어 추가 지원 포맷 오디오 및 비디오 재생 원시 리소스 파일 재생 파일 또는 스트림 재생 오디오 및 비디오 캡쳐 오디오 캡쳐 비디오 캡쳐 안드로이드 미디어 프레임워크 위치기반 서비스 기본적 패키지 android.location com.google.android.maps android.location 패키지 시스템 서비스 기초 로케이션 매니저 서비스 로케이션 프로바이더 위치기반 서비스 시뮬레이션 DDMS를 통한 모의 실험 위도/경도 설정 방법 GPX 파일 사용법 KML 파일 사용법 geo 명령어를 통한 모의 실험 위도/경도 설정방법 NMEA 사용법 com.google.android.maps 패키지 MapView 와 Overlay 소개 구글 Map API 키 애플리케이션 사인닝(Signing) 기타 센서 시뮬레이션 개발도구 Eclipse, ADT, SDK 사용법 안드로이드 애플리케이션 작성법 라이브러리 제작 및 사용법 애플리케이션 설치 및 실행, 실행 환경 설정 SDK 제작 방법 타켓 디바이스용 개발 사용가능한 타켓 디바이스 T-모바일 G1, 안드로이드 Dev Phone 1 개발을 위한 타켓 디바이스 설정 자체제작된 타켓 디바이스 사용법 디버깅 및 도구들 DDMS,logcat, Android Log, TraceView 디버깅과 테스트 설정 디버깅 팁들 SDK에 포함된 제반 도구들
제9강 - AIDL, Publishing, Best Practices AIDL AIDL을 사용하여 리모트(Remote) 인터페이스 디자인 개요 AIDL을 사용한 IPC의 구현.aidl(IPC) 클래스 호출 IPC 서버 : AIDL을 사용한 IPC 구현 상세.aidl 파일 생성.aidl 파일의.java 파일로의 변환 인터페이스 메쏘드들의 구현 클라이언트에게 해당 인터페이스의 제시 파세러블(Paracelable)을 이용한 파라메타 전달 IPC 클라이언트 : IPC 메쏘드 호출.aidl 파일 생성 ServiceConnection 구현 Context.bindService() 호출 ServiceConnection.onServiceConnected() Callback 구현 IPC 메쏘드 호출 Context.unbindService() 애플리케이션 배포 애플리케이션 사인닝(Signing) 사인시 고려사항 사인 유틸리티를 위한 환경설정 디버그 모드 사인닝 공식 배포를 위한 사인닝 주의 : 개인키 관리 보안 애플리케이션 버전관리 애플리케이션 버전 설정 최소 시스템 API 버전 명시 애플리케이션 배포 준비 배포전 일반적 고려사항 애플리케이션 최종빌드전 고려사항 최종 빌드 후 확인사항 애플리케이션 배포 안드로이드 마켓을 통한 배포 안드로이드 마켓상에서의 애플리케이션 업그레이드 우수 사례 성능 향상을 위한 설계 성능 향상을 위한 2가지 기본 규칙 주요 고려사항 : 11가지 주요 고려사항별 성능비교 응답성 향상을 위한 설계 ANR 발생 이유 ANR 회피 방법 응답성 보강방법 무결절성 확보를 위한 설계 주요 고려사항 : 10가지
제10강 - Android PDK, NDK, Applications, Providers 안드로이드 플랫폼 개발 키드(PDK) 디바이스 요구사항 안드로이드 시스템 빌드 안드로이드 빌드 시스템 이해 안드로이드 플랫폼 빌드 안드로이드 커널 빌드 안드로이드 디바이스의 기본적 구동 새로운 디바이스를 위한 빌드 구동하기 키맵과 키보드 디스플레이 드라이버들 멀티미디어 오디오 카메라 전원관리 네트워킹 Wi-Fi GPS 블루투스 텔레포니 RIL: Radio Interface Layer 테스트 Instrumentation 테스트 안드로이드 C/C++ 애플리케이션 개발 키드(NDK) 안드로이드 툴체인 기초 C 애플리케이션 제작 C++ 애플리케이션 제작 shared 라이브러리 제작 및 사용법 static 라이브러지 제작 및 사용법 JNI 지원을 위한 shared 라이브러리 제작 및 사용법 안드로이드 기본 애플리케이션들 AlarmClock / Browser / Calculator / Camera / Contacts Email / GoogleSearch / HTMLViewer / IM / Launcher Mms / Music / PackageInstaller / Phone / Settings SoundRecorder / Stk / Sync / Updater / VoiceDialer 안드로이드 기본 컨텐트 프로바이더들 CalendarProvider ContactsProvider DownloadProvider DrmProvider GoogleContactsProvider GoogleSubscribedFeedsProvider ImProvider MediaProvider TelephonyProvider