Basics concepts/ structure

똘이주인·2021년 7월 12일
0

Android란?

  • Google에서 인수한 Mobile용 OS.
  • 아이폰이 개발될 당시에 애플 직원 몇명이 뛰쳐나가서 만든 것이 안드로이드라고 한다. → iPhone이 가지고 있는 기능들을 모두 가지고 있다.
  • 안드로이드는 어려움 → 즉, 외워야함 패턴이 거의 일정해 ㅜ서 그 패턴만 외우면 개발하는데 큰 문제가 없다.
  • 지금은 노트북, 자동차, 냉장고, 전자레인지 등 스크린이 있다 싶은 것들에는 모두 탑재되고 있다. → IoT, 즉 홈 네트워크가 가능해진다.

Android 의 특징

안드로이드 애플리케이션 구성요소

  1. Activity

    애플리케이션 1개의 화면을 의미한다.

    동작방식 : 생애 주기에 따라 사용자와 상호작용을 하지 않는 액티비티는 비활성화 및 소멸 수 있다.

  2. Service

    화면에 표시되지 않고 백그라운드에서 실행되는 컴포넌트

  3. BroadcastReceiver

    다양한 이벤트를 개발자가 항상 확인하고 처리해야 하는 비효율적이고 어려운 작업을 해결하고자 BoardCastReceiver는 어떠한 특정 작업이 발생되는 경우 그것을 받고자 하는 곳에 알려주는 기능(방송알림 기능)

  4. Content Provider

    애플리케이션 내의 데이터들은 기본적으로 해당 애플리케이션에서만 접근할 수 있고 다른 애플리케이션은 접근할 수 없기 때문에, 이에 대한 접근을 허용하기 위해 사용.

안드로이드 파일시스템 구성

안드로이드 플랫폼을 구성하고 있는 파일시스템

로컬데이터가 저장되는 위치

프로젝트파일구성

  1. Eclipse 기반

    • /src

      안드로이드 애플리케이션 소스를 포함한 폴더

    • /gen

      안드로이드 애플리케이션을 위해 자동으로 생성하는 디렉토리

      내부에는 R.java 파일이 자동으로 생성됨 : 실행 코드 내부에서 리소스들을 쉽게 사용할 수 있게 해주는 R객체 인스턴스의 기본이 되는 클래스

    • /res

      안드로이드 애플리케이션의 모든 리소스들을 포함하는 디렉토리

    • /layout/main.xml

      안드로이드 애플리케이션의 레이아웃들을 정의

      main.xml : 애플리케이션의 기본 레이아웃

    • /values/strings.xml

      안드로이드 애플리케이션의 문자열, 배열, 색상 및 크기 등에 대한 리소스들을 관리

    • AndroidManifest.xml

      안드로이드 애플리케이션에 대한 이름, 버전 정보, 애플리케이션 구성요소 및 권한 등을 설정

  2. Android studio 기반

    해당 툴은 IntelliJ 기반으로 안정성과 속도면에서 eclipse보다 뛰어나다는 평가를 받고 있다.

    • Project

      모듈이라는 작은 프로젝트로 구성

      이클립스 : 애플리케이션이나 라이브러리가 각각 1개의 프로젝트로 구성

    • Module

      애플리케이션이나 라이브러리를 구성하는 최소단위

      이클립스 : 프로젝트

    • Gradle Wrapper

      빌드에 사용되는 Gradle 툴을 편리하게 사용할 수 있도록 도와주는 스크립트

    • 기타

      프로젝트 내 모듈들의 빌드 진행시 공통으로 적용해야 하는 설정정보가 제공

안드로이드의 기본구조

크게 5개의 큰 레이어로 분리할 수 있다.

아래의 표와 같이, 가장 하단부터,

Linux Kernel, Libraries, Android Runtime, Application FrameWork, Applications 으로 구성

  1. Linux Kernel 레이어

    안드로이드는 가장 하단에 Linux Kernel이 있기 때문에, 리눅스 기반을 가지고 있다고 할수 있다.
    Linux의 모든 요소를 가져온것은 아니고 Core부분과 휴대폰 사용에 필요한 부분만 추가해서 사용하는 Linux Kernel 을 가지고있다.

    Android와 리눅스를 비교한 이미지

    중요한것은, 리눅스에 Dalvik가상머신을 올리고,
    그위에 Android에 필요한 API들을 추가한 FrameWork를 올렸다는점.

  2. Libraries 레이어

    주요 라이브러리가 위치
    모바일 데이터 베이스 SQLite

    Media Player에 관련한 MediaFrameWork나 화면과 관련된 Surace Manager등이 위치

  3. Android Runtime레이어

    이곳에 구글의 자바 가상머신인 Dalvik위치
    Dalvik의 실행 파일은최소한의 메모리에 최적화된 DEX(Dalvik Execute)포맷을 사용.

    이 DEX파일을 APK로 만들어서 배포가 되어지는 것

  4. Application Framework 레이어

    안드로이드 SDK에 의해서 제공되는 API라이브러리나 emulator, 디버깅툴 같은 툴

    여기에는 데이터를 공유할 때 사용하는 Content Providers부터 푸쉬메시지와 관련된 Notification Manager와 위치와 관련된 Location Manager까지 안드로이드 프로그래밍을 하면서 사용되는 라이브러리들도 포함

  5. Applications 레이어

    여기가 바로 사용자들과 만나는 최상위 레이어

    안드로이드에서 제작되어 번들로 실리는 앱이나, 사용자가 설치한 앱들을 가르킴

0개의 댓글