본문 바로가기
OLD_달려라/Android

안드로이드 개념 익히기

by 달승 2019. 12. 30.

오늘도 화이팅!

 

 

애플리케이션 기본 설명

각 Android 앱은 자체적인 보안 샌드박스에 속하며, 이는 다음과 같은 Android 보안 기능으로 보호됩니다.

- Android 운영체제는 멀티유저 Linux 시스템으로, 여기서 각 앱은 각기 다른 사용자와 같습니다.

- 기본적으로 시스템이 각 앱에 고유한 Linux ID를 할당합니다(이 ID는 시스템만 사용할 수 있으며 앱에서는 인식하지 못함). 시스템은 앱 안의 모든 파일에 대해 권한을 설정하여 해당 앱에 할당된 사용자 ID만 이에 액세스할 수 있도록 합니다.

- 각 프로세스에는 자체적인 가상 머신(VM)이 있고, 그렇기 때문에 한 앱의 코드가 다른 앱과는 격리된 상태로 실행됩니다.

-기본적으로 모든 앱이 앱 자체의 Linux 프로세스에서 실행됩니다. Android 시스템은 앱의 구성 요소 중 어느 하나라도 실행해야 하는 경우 프로세스를 시작하고, 더 이상 필요 없거나 시스템이 다른 앱을 위해 메모리를 복구해야 하는 경우 해당 프로세스를 종료합니다.

 

앱 구성 요소

* 액티비티

사용자와 상호작용하기 위한 진입점


* 서비스

백그라운드에서 앱을 계속 실행하기 위한 다목적 진입점

- 예를 들어 서비스는 사용자가 다른 앱에 있는 동안에 백그라운드에서 음악을 재생하거나, 사용자와 액티비티 간의 상호작용을 차단하지 않고 네트워크를 통해 데이터를 가져올 수도 있습니다.

- 라이브 배경화면, 알림 리스너, 화면 보호기, 입력 메서드, 접근성 서비스 및 여러 가지 기타 핵심 서비스 기능이 모두 애플리케이션에서 구현하고 시스템에서 애플리케이션을 실행할 때 바인딩하는 서비스로 빌드됩니다.

- 서비스는 Service 하위 클래스로 구현


* Broadcast Receiver

- 시스템이 정기적인 사용자 플로우 밖에서 이벤트를 앱에 전달하도록 지원하는 구성 요소로, 앱이 시스템 전체의 브로드캐스트 알림에 응답할 수 있게 합니다.

-  예를 들어 앱이 사용자에게 예정된 이벤트에 대해 알리는 알림을 게시하기 위한 알람을 예약할 경우, 그 알람을 앱의 Broadcast Receiver에 전달하면 알람이 울릴 때까지 앱을 실행하고 있을 필요가 없습니다.
   대다수의 브로드캐스트는 시스템에서 발생합니다. 예컨대 화면이 꺼졌거나 배터리가 부족하거나 사진을 캡처했다고 알리는 브로드캐스트가 대표적입니다.

- BroadcastReceiver의 하위 클래스로 구현되며 각 브로드캐스트는 Intent 객체로 전달


* 콘텐츠 제공자

파일 시스템, SQLite 데이터베이스, 웹상이나 앱이 액세스할 수 있는 다른 모든 영구 저장 위치에 저장 가능한 앱 데이터의 공유형 집합을 관리

- 다른 앱은 콘텐츠 제공자를 통해 해당 데이터를 쿼리하거나, 콘텐츠 제공자가 허용할 경우에는 수정도 가능

*** 액티비티, 서비스, Broadcast Receiver Intent라는 비동기식 메시지 활성화

*** 콘텐츠 제공자ContentResolver 보낸 요청의 대상으로 지정되면 활성화

 

안드로이드 프로젝트 개발 단계 

화면 디자인 및 편집

- .xml파일의 Design & Text
- .java에서도 디자인 편집 가능

 

이벤트 작성 순서

 

 

BaseApp 프로젝트 구성 (폴더 설명)

* java 폴더

- main java 소스 포함


* res 폴더

- 앱 개발에 사용되는 이미지, 레이아웃, 문자열 등이 들어가는 폴더
- drawable : 이미지 파일
- layout : 액티비티(화면) 구성하는 xml파일
- values : 문자열 저장
- menu : 메뉴 xml 파일 저장

* manifests 폴더

- 앱의 여러 가지 정보 포함
- Android 빌드 도구, Android 운영체제 및 Google Play에 앱에 관한 필수 정보를 설명


* Gradle Scripts 폴더

- Gradle 빌드 시스템과 관련된 파일이 들어 있음
• build.gradle (Module: app) : 빌드 스크립트 핵심 파일
• local.properties : 컴파일되는 SDK의 경로가 들어 있음
• gradle.properties: JVM 관련 메모리가 설정되어 있음

리소스 종류 

설명 

디렉토리 

파일 이름 

문자열 

텍스트 문자열 

/res/values 

- strings.xml <권장>

- <string> 요소를 정의한 어떤 XML 파일도가능 

문자열 배열 

텍스트

문자열들의 리스트 

/res/values 

- array.xml<권장>

- <string-array> 요소를 정의한 어떤 XML 파일도 가능 

색상 

16진수로 색상 값 정의 

/res/values 

- colors.xml<권장>

- <color> 요소를 정의한 어떤 XML 파일도 가능 

크기 

다양한 측정 단위의 크기 

/res/values 

- dimens.xml<권장>

- <dimen> 요소를 정의한 어떤 XML 파일도 가능 

비트맵 그래픽 

각종 이미지 및도형 

/res/drawable 

- png, jpg, gif 등 각종 이미지 파일, 도형을 정의한 XML 파일 

트윈 애니메이션

트윈 애니메이션의 변환 방법을 정의 

/res/anim 

- <set> 루트 요소 밑에 <alpha>, <scale>, <translate>, <rotate> 등을 정의한 어떤 XML 파일도 가능 

메뉴 

메뉴 구성 

/res/menu 

- <menu> 루트 요소 밑에 <item>, <group> 등을 정의한 어떤 XML 파일도 가능 

레이아웃 파일 

각 화면 별 레이아웃 정의 

/res/layout 

- main.xml 이 일반적으로 첫 화면에 대한 레이아웃을 정의한 XML 파일이며, 각 화면 별로 레이아웃을 개별 XML로 정의 가능 

스타일 및 테마 

각 뷰나 위젯에 대한 속성 정보들을 정의 

/res/values 

- styles.xml, themes.xml<권장>, <style> 요소를 정의한 어떤 XML 파일도 가능 

XML 파일 

개발자가 정의한 커스텀 XML 

/res/xml 

- 개발자 임의로 정의하는 모든 XML 파일 

원본 파일 

각종 원본 파일

/res/raw 

- mp3, mpg, txt, exe 등 각종 원본 파일 

위의 표 출처: https://hyeonstorage.tistory.com/152 [개발이 하고 싶어요]

 

 

 

 

 

 

 

 


참고 사이트

 

애플리케이션 기본 항목  |  Android Developers

Android 앱은 Kotlin, Java, C++ 언어를 사용하여 작성할 수 있습니다. Android SDK 도구는 모든 데이터 및 리소스 파일과 함께 코드를 컴파일하여 하나의 APK를 만듭니다. Android 패키지는 접미사가 .apk인 아카이브 파일입니다. 한 개의 APK 파일에는 Android 앱의 모든 콘텐츠가 들어 있으며, Android로 구동하는 기기가 앱을 설치할 때 바로 이 파일을 사용합니다. 각 Android 앱은 자체적인 보안 샌드박스

developer.android.com

 

댓글