(혹시나 누가 보게된다면... 틀리게 알고있는 부분 제발 댓글로 알려주세요!!)
우선은 간단하게만 Android에 대해 알고 시작해보자.
Android
- 특정 Vendors에 종속되지 않고 안드로이드 플랫폼 기기를 실행하는 모든 S/W와 Mobile Device를 위한 최초의 Open Platform이다.
장점
- 개방성
- Android는 Open Source License를 통해 제공되며, 개발자는 Application개발 시 단말기의 기능을 전례 없이 자유롭게 접근 할 수 있다
- 무료
- 앱개발 시 라이센스 비용이나 로열티, 검사료, 등록비, 인증료가 없다
Android 앱 중요 구성 요소
안드로이드 4대 컴포넌트 라는게 있다.
지금은 간단하게만 “이런게 있구나~” 하고 넘어가자
- Activity - 보여지는 화면
- Service - 화면이 없을때도 동작할 수 있게 하는거 (음악재생, 다운로드)
- Broadcast Receiver - 이벤트에 맞는 행동을 하게 하는거 (배터리 없을때 알람 띄워라)
- Content Provider - 서로 다른 App간에 데이터를 공유하기 위한거 (연락처, 사진앱이랑 연결하는거지)
번외. Intent - 이거는 위에 4가지를 연결시켜주는거 정도로만 알아두자 우선은
Android Project 기본 구조
안드로이드를 설치하고 작동하게 되면 밑에같은 구조로 되어있다.

Manifest
- 안드로이드의 정체성
- 전체 안드로이드 프로젝트의 Meta 정보가 선언되어 있음
kotlin + java
- 안드로이드에서 사용되는 kotlin, java 파일들 전체가 있는 곳
res
gradle scripts
- 앱에서 필요한 의존성, 버전 등이 있는 곳이다
- Project build.gradle - 앱에 하나만 있다,
- Module build.gradle - 하나의 앱에 있는 특정 모듈들의 gradle
libs.versions.toml
- 앱의 의존성을 편하게 관리할 수 있도록 도와주는 toml파일이다
Android 동작 과정
- 실행하기 위한 과정
- JAVA 환경에서는JAVA 바이트코드를JAVA 가상머신(virtual machine)을통해 실행하지만 안드로이드는ART/Dalvik이라고하는별도의 가상머신에서 JAVA 바이트코드를실행함
- 안드로이드 SDK가 제공하는 DEX 변환기를 이용하여 JAVA 바이트코드를 Dalvik의 실행포맷인 .dex파일(Dalvik바이트코드)로변환하게됨
- 변환된 .dex파일과 리소스파일들은 설치할수있는.apk 파일로 만들어짐
- 프로젝트 실행 과정
- 안드로이드앱은 .apk 파일 확장자로 패키징되어 배포됨
- 안드로이드프로젝트에대한코드컴파일작업이수행되면, JAVA 프로그램의 .class파일이 생성되고, .class파일을 이용하여 안드로이드 실행환경(Dalvik/ART)에 적합한 .dex파일이 생성됨
- 배포하는 과정
- 컴파일된 리소스파일(XML)은 resources.arsc라는 파일로 생성되고, 안드로이드앱의 설정환경을 정의하는 AndroidManifest.xml 파일이 생성됨
- 최종적으로 컴파일되지않은 리소스파일(이미지, 아이콘파일등)들과 .dex파일, resources.arsc파일, AndroidManifest.xml 파일이 함께 패키징되어 .apk 파일이 생성됨
- 이후 서명Key를 이용하여 .apk 파일에서 명작업을하여 .apk파일이 타인에의해서 위조, 변조되는것을 방지함
- 서명Key는 디버그목적으로 앱을빌드할때 사용하는Debug Key와 배포목적으로 빌드할때 사용하는 Release Key로 구분됨
- 이러한 서명작업에서 사용한 키값은 안드로이드앱의 업데이트에서 개발자의 식별에 사용됨
- 마지막으로 다양한앱을 공유하거나 거래 할 수 있는 마켓인 Google Play에업로드를 수행함
- 안드로이드 앱 배포 과정

- Dalvik : JIT(JustInTime) 방식의 컴파일환경을 기반으로 안드로이드
스마트폰의 가상머신
- ART(Android RunTime) : 앱을설치하기전에 컴파일을끝내고앱을실행하는 안드로이드 스마트폰의 가상머신