Download presentation
Presentation is loading. Please wait.
1
3주차 Android Application ANDROID App.
2
프로젝트의 폴더
3
프로젝트의 폴더 폴더 설명 /src /Android <version> /res /gen /assets
자바 소스 파일이 들어있는 폴더 표준 자바와 마찬가지로 패키지명과 동일한 하위 폴더들이 만들어짐 /Android <version> 이 프로젝트를 빌드할 때 타깃(Target)으로 지정한 플랫폼의 기본 라이브러리가 들어있는 폴더.(예, /Android 2.2) Jar파일이 들어 있음 /res 리소스 파일이 들어있는 폴더 XML 레이아웃, 그림파일, 문자열을 정의한 XML파일 등이 들어있는데 각 파일의 유형에 따른 하위 폴더들이 만들어져 있음 (예, XML 레이아웃 파일을 [res/layout]폴더, 그림 파일은 [res/layout] 폴더, 그림 파일은 [/res/drawable]폴더 그리고 문자열을 정의한 XML파일은 [/res/values]폴더 밑에 들어 있음) /gen ADT가 자동으로 만들어 내는 소스 파일이 들어가는 폴더 이 파일은 프로그래머가 만드는 것이 아니므로 건드리면 안 됨 이 폴더 안에는 자바 패키지에 해당하는 하위 폴더와 함께 R.java파일이 자동을 만들어짐. /assets 이 폴더는 처음에 비어 있음 이 폴더에 넣어서 처리하는 파일들을 저장함(예, 동영상 파일) AndroidManifest.xml 애플리케이션에 대한 정보를 담고 있는 파일 매니페스트라고 부르며 애플리케이션 구성요소나 권한 등의 정보를 정의함 Default.properties - 프로젝트 설정과 관련된 속성이 들어있는 파일(예, 빌드 타깃(Target))
4
프로젝트 빌드 과정
5
프로젝트 빌드 상세 과정
6
안드로이드에 대한 기술적 접근 안드로이드는 리눅스가 아니다. 리눅스 커널을 사용하지만, 네이티브 윈도우 시스템이 없으며,
Glibc를 지원하지 않으며, GNU/리눅스 유틸리티들이 없다. 안드로이드는 운영체제, 미들웨어 그리고 핵심 애플리케이션을 포함하는 모바일 단말용 소프트웨어 스택(stack) 안드로이드는 리눅스 커널 위에서 동작하는 자바 기반의 애플리케이션 프레임워크 안드로이드 SDK는 안드로이드 플랫폼 상에서 자바 언어로 애플리케이션을 개발하고자 할 때 필요한 도구와 API의 집합
7
API의 대표 패키지들 자바 SDK의 많은 부분이 그대로 지원되므로 기존 개발자들과 친숙함
안드로이드만의 라이브러리들이 기본 프레임워크와 휴대단말용 기능들을 제공함
8
안드로이드 아키텍쳐 아케텍쳐는 커널 -> 라이브러리 -> 애플리케이션 프레임워크 -> 애플리케이션으로 구성
9
리눅스 커널 안드로이드는 리눅스 커널 위에 만들어졌지만 안드로이드가 리눅스는 아님
핵심적인 시스템 서비스들을 제공하며 프로세스, 메모리, 전원 관리, 네트워크, 드라이버, 보안 등의 내용을 포함 표준 리눅스 도구(Utilities)를 모두 제공하지 않음 안드로이드 커널도 공개되어 있음
10
라이브러리와 달빅 VM 라이브러리 C/C++로 구성된 라이브러리로 애플리케이션 프레임워크를 통해 사용할 수 있도록 구성됨
코어 라이브러리 코어 라이브러리는 자바 라이브러리의 대부분 기능을 제공 달빅 VM 달빅 VM의 실행 파일은 최소한의 메모리에 최적화된 DEX(Dalvik Execute) 포맷을 사용하며 안드로이드 애플리케이션은 독립적 프로세스를 할당 받음
11
달빅 VM 안드로이드 애플리케이션을 위한 실행 환경 제공
달빅 VM은 디바이스가 여러 개의 VM을 효율적으로 실행할 수 있도록 구성되어 있음 레지스터 기반의 버추얼 머신 달빅 실행 포맷(.dex)의 실행 .dex포맷은 최소한의 메모리만을 사용할 수 있도록 최적화되어 있음 컴파일 시에 생성됨 리눅스 커널의 기능에 의존하는 부분 스레드 처리와 낮은 수준의 메모리 관리
12
애플리케이션 프레임워크 애플리케이션 프레임워크(Application Framework)는 프로그래밍에서 특정 운영 체제를 위한 응용 프로그램 표준 구조를 구현하는 클래스와 라이브러리 모임이다 안드로이드에서 제공하는 애플리케이션도 애플리케이션 프레임워크의 API에 기반한 경우가 많음 간단한 재사용 컴포넌트, 어떤 애플리케이션과도 호환 가능한 호환성을 제공 액티비티 관리자 (Activity Manager) 애플리케이션의 라이프사이클을 제어함 내용 제공자 (Content Provider) 애플리케이션 간의 데이터를 공유할 수 있도록 함 리소스 관리자 (Resource Manager) 코드 이외의 부분인 리소스를 관리함 위치 관리자 (Location Manager) 자신의 위치 파악에 필요한 기능을 제공함 알림 관리자 (Notification Manager) 알림 기능을 사용자에게 방해가 되지 않도록 제공함
13
안드로이드 개발도구 SDK에 포함된 개발도구 SDK 설치 폴더에는 샘플과 개발도구가 들어 있음
14
개발도구 개요 계층도 뷰어 (Hierarchy Viewer) 디버그 브리지(ADB) 그리기 패치(Draw-9 Patch)
개발자들이 사용자 인터페이스 구성을 확인하고 최적화 할 수 있도록 지원 사용자 인터페이스를 구성하는 뷰들 간의 계층도를 눈으로 보고 확인할 수 있도록 보여주며 현재 디스플레이된 화면의 일부를 동적으로 확대해서 볼 수 있음 디버그 브리지(ADB) 도스창에서 명령어를 통해 에뮬레이터나 실제 단말에 안드로이드 패키지 파일(.apk) 설치 에뮬레이터나 실제 단말에서 실행되고 있는 애플리케이션에 표준 디버거를 연결 그리기 패치(Draw-9 Patch) NinePatch 이미지를 간단하게 만들 수 있는 그래픽 편집기 NinePatch 이미지란 뷰의 배경이나 다른 이미지를 위해 사용할 수 있는 크기 조정이 가능한 비트맵 리소스 패키징 도구(Android Asset Packaging Tool) 개발자가 .apk 파일을 만들 수 있도록 하는 도구 (.apk에는 바이너리와 리소스가 포함됨)
15
개발도구 개요 디버그 모니터 서비스(Dalvik Debug Monitor Service)
개발자들이 에뮬레이터나 실제 단말의 프로세스를 관리하고 디버깅할 수 있도록 도와주는 도구 기능 프로세스 강제 종료 디버깅 대상 프로세스의 선택 트레이스(trace) 데이터 생성 합(heap)과 스레드(thread) 정보 보기 에뮬레이터나 실제 단말의 스크린 캡쳐 인터페이스 정의 언어(Android Interface Description Language) 개발자들이 프로세스간 통신에 사용되는 인터페이스를 정의하는 aidl코드를 만들 수 있도록 하는 방법 sqlite3 안드로이드 애플리케이션에 만들고 사용하는 SQLite 데이터 파일에 접근할 수 있는 도구
16
개발도구 개요 트레이스 조회 도구(Traceview) SD 카드 생성기(mksdcard) dex 변환기(dx)
안드로이드 애플리케이션에서 추출된 트레이스 로그 데이터를 분석한 그래픽 자료를 만들어내는 도구 SD 카드 생성기(mksdcard) 에뮬레이터에서 사용될 수 있는 외부 저장장치(SD카드 등)의 디스크 이미지를 개발자들이 가상으로 만들 수 있는 도구 dex 변환기(dx) 자바 클래스 파일을 안드로이드 바이트코드인 .dex포맷으로 변환하는 도구 UI/애플리케이션 테스트 도구(UI/Applicaton Exerciser Monkey) 에뮬레이터나 실제 단말 상에서 실행되는 프로그램으로 가상으로 사용자 이벤트(클릭, 터치, 제스처, 등)나 시스템 수준의 이벤트를 만들어내는 도구로 스트레스 테스트 등에 사용됨. 액티비티 생성기(activitycreator) 안드로이드 애플리케이션 컴파일을 위한 빌드 파일들을 만들어 내는 스크립트
Similar presentations