[\assets폴더]
-애플리케이션 배포시 static하게 패키지에 포함 시킬 리소스 저장 폴더.
(컴파일되지 않고 raw형태로 패키징되며, AssetManager 클래스를 이용해 바이트 스트림 형식으로 읽어 와서 사용함.)

[\bin폴더]
-컴파일된 자바 class바이너리가 저장되는 폴더.
 ◈bin/classes 폴더 : 컴파일된 자바 코드
 ◈bin/classes.dex : 실행가능한 컴파일된 자바 코드
 ◈bin/AppName-debug.apk 또는 bin/AppName-unsigned.apk : install가능한 안드로이드 애플리케이션

[\gen폴더]
-프로젝트를 처음 빌드하면 프로젝트 루트 폴더 밑에 gen이라는 이름의 폴더 생성되고, 내부에는 R.java 파일이 자동으로 생성됨.

R.java 파일은 프로젝트에서 사용되는 이미지(drawable), 레이아웃(layout), 스트링(string)등 리소스를 가리키는 인덱스 파일로 \src 디렉터리의 자바코드 내부에서 리소스 디렉터리의 XML파일들과 연관하여 사용 할수 있게 해주는 클래스이다.
리소스 식별자 상수가 자동으로 저장됨으로 임의의 수정하면 안된다.

\Referenced Libraries 폴더
-애플리케이션이 필요한 외부 JAR 파일 저장하는 폴더

[\res 폴더]
-애플리케이션의 레이아웃/이미지/문자열등 컴파일된 자바 코드와 함께 패키징되는 리소스 저장 폴더.
이곳에 저장된 리소스들은 AAPT(Android Asset Packahing Tool)의 의해 컴파일되고 리소스 명세가 \gen 폴더에 자동 생성됨.

res\anim : animation을 지정하는 xml형식의 문서 저장
(플레임 별로 애니메이션 설정) 또는 tweened(애니메이션의 처음과 끝의 형태를 지정하면 자동으로 중간 단게들이 채워짐)

res\drawable : png, jpeg등의 이미지 파일

res\layout : UI layout관련 xml 형식의 문서 파일

res\menu : menu 관련 xml 형식의 문서

res\raw : 컴파일 되지 않은 리소스 저장.
(예로 계정 정보나 프레퍼런스 정보 등을 담은 파일)
-자바코드에서는 Resources.openRawResource()메소드를 사용해 리소스에 접근한다.


res\values : string, 오브젝트 크기등을 나타내는 xml 형식의 문서 파일로
▣ arrays.xml :array들 정의
▣ color.xml : string값의 컬러 또는 drawables컬러 정의
▣ string.xml : 레이아웃 XL에서 사용하거나 자바 프로그램 내부에서 사용 가능한 string 값 정의
▣ styles.xml : 화면 스타일이나 테마 등을 정의합니다.
res\xml : 애플리케이션에 포함시키고자 하는 xml 형식의 자원.

\src폴더
"com.example.helloandroid" 밑에 "HelloAndroid.java"와 같이 소스코드가 생성됨.
프로젝트 생성시 사용자가 제공한 메인 액티비티의 이름에 따라 프로젝트폴더\src\메인 액티비티 이름.java 파릴로 생성되며, 이폴더에 저장된 파일은 자유롭게 편집하거나 또는 새로운 파일을 추가 할 수 있음.


[AndroidManifest.xml]
-해당 애플리케이션의 컴포넌트(activity, service, Content Provider등) 정보 및 보안 그리고 버젼 등 과 관련된 정보가 수록된 xml 형태의 문서임.


build.xml
-리눅스의 Ant Script에서 애플리케이션을 컴파일하고 안드로이드 디바이스에 인스톨하는데 사용하는 컴파일 정보 파일

default.propperty
Ant Script가 빌드할때 사용하는 프로퍼티(property)파일









안드로이드 가상 안드로이드 가상 디바이스(AVD)를 설치하고 초기화면을 뛰울때
emulator : could not find virtual device named AVD
문구 발생시
--> cmd창에서 ' android list avd ' 명령어로 안드로이드 가상 디바이스 설치 위치 확인
한글명 된 디렉터리를 옮겨주면 해결 됨.
 
' mkdir \android-avd ' = c:\android-avd 디렉터리 생성
'android move avd -n ' 생성한Device명 -p \android-avd' 치면 생성된 디렉터리로 이동
(주의점 : 디바이스명 영대소문자 구분)

안드로이드 플랫폼 개념 정리

SMART_Phone/Android 2011. 1. 5. 01:48 Posted by Request

안드로이드 플랫폼은 크게 네 부분의 레이어(Layer)로 나뉜다.

1)커널 부분
 - 안드로이드는 리눅스 커널 2.6을 채택항 보안, 메모리 관리, 프로세스 관리, 네트워크  스택, 드라이버 등 지원

2)하드웨어 추상레이어
 - 노란색 선으로 표시된 부분은  HAL layer로 불리는 Hardware Abstraction Layer임.

3)라이브러리
 -애플리케이션 플레임워크를 통해 응용 프로그램에 기능을 제공하는 구조

4) 애플리케이션 플레임워크
 -안드로이드 핵심은 자바 실행환경을 지원하는 안드로이드 런타임으로 달빅 가상머신을 기본으로 함.

(1)달빅가상머신 특징 : Device에서 복수의 가상머신으로 자바 인스턴스를 동작 시킬수 있도록 개발 되어 있으며, 복수의 응용 프로그램을 동작 시키면 복수의 버추얼 인스턴스들이 생성되는 형식으로 안드로이드 버전 업그레이디 때마다 변화되는 모듈임.


(2)플레임워크와 라이브러리 사이에는 자바와 C 사이의 서로 다른 호출 규약 등을 맵핑하는 JNI(Java Native Interface)라는 것이 존재하며, 이를 위한 안드로이드 가이드(NDK)가 있고 샘플도 공개 되어 있다.
사용이유는
속도문제, 자바에서 하드웨어 제어, 자바에서 지원되지 않는 특정 운영체제 서비스와 기능 구현 목적

(3)안드로이드 커널
 ⓐ바인더(Binder)
  - 바인더 서비스는 개체지향처럼 컴포넌트 중심으로 양쪽간 서로 다른 애플리케이션이나 서비스간 메세지를 주고받는 구조로 바뀜.
(무한정 기다리는 문제 처리)
단점으로는 각각 서비스마다 바인더가 있어야 하므로 메모리 낭비 있음.
쓰는 이유는 각각 별개로 동작하기 때문에 주고 받는 통신에 대한 보안과 안정성 그리고 응답속도를 높일수 있음.

ⓑ로우 메모리 킬러(Low Memory Killer)
 -리눅스에서는 프로세스마다 우선순의를 주고 우선순위가 낮은 프로세스들을 없앴으나,
안드로이드는 바이더라는 기능 덕에 그룹마다 우선순위를 주기 되어, 메모리 부족시 우선순위가 낮은 그룹부터 제거 함.





안드로이드

안드로이드 응용프로그래밍 개요

작성:zbum

I. 서론

안드로이드 어플리케이션은 Java로만 개발할 수 있다. 드디어 Java개발자에게 모바일의 세상이 열린것 이다. 하지만 너무 좋아하거나 광기 어린 생각은 금물이다. 안드로이드가 국내에서 활성화되기에는 무선 네트웍 기반 시설이나 이통사 수익모델에 따른 요금 체계 등 넘어야 할 산이 많다.  

그럼에도 불구하고 안드로이드 개발을 준비해야 하는 것은 ... 블라블라...

 

이제부터 안드로이드 응용프로그램 개발을 시작해 보자.

II. 안드로이드 개발

안드로이드는 언어가 아니라 실행환경 정도로 볼 수 있을 것이다.(물론 플랫폼이 적절한 표현이지만 개발자 입장에서 이해하기 쉽게...)  안드로이드 응용 프로그램은 느슨한 결합으로 이루어진 블럭의 조합이다.  따라서 아래의 안드로이드 API를 구현하고 이를 조합함으로써 안드로이드 어플리케이션을 구현할 수 있다.

  • Activity: 생명주기(life cycle)를 가진 오브젝트로 필요에 따라 사용자를 위한 UI를 포함할 수 있는 모듈이다. 특히, 개발하는 응용 어플리케이션에 접근하는 포인트로써 여러 응용 activities 중 하나를 지정할 수 있다.
  • View:
  • Intent : intent는 사용자에게 무언가를 하고 있는 듯이 보이기 위한 메시지 오브젝트이다. 예를 들어, 웹 페이지를 보고 싶을 때 intent instance는 시스템에 전달하기 전에 URI를 찾고 있는 듯 사용자에게 보여주고 해당 시스템에 웹페이지에 대한 요청을 보내게 된다. 또한, 관심있는 이벤트를 시스템에 보여주는 일종의 공지(notification) 메시지로 활용할 수도 있다.
  • Service: 백그라운드에서 실행되는 코드로서, 필요에 따라서 자체 프로세스 또는 다른 응용 프로세스의 컨텍스에서 실행된다. 사용자에 의해 UI 창이 없어져도 여전히 음악이 실행되는 미디어플레이어를 그 예로 들 수 있다.
  • Notifications:
  • Content Providers: 장치(device)에 있는 데이터에 접근할 수 있도록 제공해주는 일종의 데이터 보관소로, 특정 응용은 content providers를
    통해 미리 공개된 다른 응용에서 사용하는 데이터에 접근할 수 있으며, 사용자 스스로도 공개할 데이터를 content providers를 통해 정의할 수 있다.