안드로이드 앱의 기본 구조

2022. 12. 4. 00:37_Study/AndroidStudio

728x90

안드로이드 소개


해당 자료는 강의 학습자료이며, do it 깡샘의 안드로이드 프로그래밍을 참고하였습니다.

 

 

안드로이드는 공개 운영체제인 리눅스를 기반으로 하며 자바나 코틀린 언어를 이용해 개발한다. 또한 운영 체제의 주요 부분과 라이브러리, 구글에서 만든 앱 등의 코드는 대부분 공개되어 있다. 안드로이드 스마트폰은 구글 뿐 아니라 여러 제조업체에서 만들 수 있으며 다양한 방법으로 사용자에게 배포할 수 있다. 안드로이드 플랫폼에서는 모든 응용  프로그램이 평등하다는 사상을 바탕으로한, 모바일에 기본으로 탑재된 앱과 개발자가 만든 앱이 똑같은 환경에서 똑같은 API를 이용한다.

 

안드로이드 운영체제의 구조

- System Apps

- Java API framework

- 네이티브 C/C++ 라이브러리 , 안드로이드 런타임

- 하드웨어 추상화 레이어 (HAL)

- 리눅스 커널

 

안드로이드는 자바 클래스를 런타임 때 그대로 실행하지 않고 DEX 파일(.dex)로 컴파일 한다.

DEX 파일을 해석하는 ART에서 이를 실행한다.

 

 

안드로이드 버전은 == API 레벨(SDK 버전)

 

 

컴포넌트를 기반으로 한 개발

컴포넌트는 어플리케이션의 구성으로 클래스이다. 앱은 여러 클래스로 구성되는데 크게 2가지로 분류한다.

-일반 클래스: 클래스의 객체 생성부터 소멸까지 생명주기 관리를 개발자 코드에서 관리

-컴포넌트 클래스 : 생명주기를 안드로이드 시스템에서 관리

 

각 상속의 상위클래스를 보고 구분한다.

- 액티비티: 화면을 구성하는 컴포넌트

- 서비스 : 백그라운드 작업을 하는 컴포넌트

- 콘텐츠 프로바이더: 앱의 데이터를 공유하는 컴포넌트

- 브로드캐스트 리시버: 시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트

 

 

컴포넌트는 앱 안에서 독립된 실행 단위이다. -> 코드결합이 발생하지 않는다. (안드로이드 시스템으로 간접 연결ㅇ르 해야한다.) 따라서 앱 실행시점이 다양하여 메인 함수 개념이 없다고 말한다. 또한 다른 어플리케이션을 라이브러리 처럼 이용할 수 있다.

 

 

 

리소스를 활용한 개발

 

리소스는 코드에서 정적인 값을 분리한 것 으로 대부분 리소스는 XML 파일로 작성한다.

 

 

 

모듈의 폴더 구성

 

targetSdk에 명시한 안드로이드 SDK는 기본으로 적용되지만 그외 오픈소스 라이브러리는 모두 dependencies에 선언해야 한다.

 

- 메인 환경 파일 : AndroidManifest.xml : http://schemas.android.com/apk/res/android로 선언시 안드로이드 표준 네임스페이스

 

 

앱 아이콘을 클릭했을 때 실행되는 액티비티 설정

 

<intent-filter>가 선언되었고 그 안에 <action> 태그의 name값이 android.intent.action.MAIN 문자열로, <category> 태그의
name값이 android.intent.category.LAUNCHER로 선언되면 이 액티비티는 앱 아이콘을 클릭했을 때 실행되는 액티비티라는 의미이다.

 

 

메인 액티비티 파일

 

setContentView() 함수는 매개변수에 지정한 내용을 액티비티 화면에 출력하며 R.layout.activity_main으로 지정시 res/layout/activity_main.xml 파일에 구성한 내용을 화면에 출력한다.