본문 바로가기
깡샘 코틀린

02 안드로이드 앱의 기본 구조

by 농농씨 2023. 6. 4.

 

SDK:Software Development Kit(소프트웨어 개발도구 모음)

 

맥에서 setting 들어가는 법

:맥에는 setting 버튼이 없다.

왼쪽상단의 android studio-Preferences에 들어가서 폰트 등의 설정을 변경할 수 있다.

 

02-1 안드로이드 소개

스택:처리해야할 요청을 저장하는 데이터 저장소 또는 버퍼

안드로이드 런타임(Android runtime:ART):앱을 실행함

자바는 개발자가 소스코드 작성하고 컴파일하면 클래스파일이 바로 만들어지고, 그 클래스 파일을 자바가상머신(JVM:java virtual machine)에서 실행함

안드로이드는 자바 클래스를 런타임때 '그대로 실행하지 않고' DEX파일로 컴파일함!

그리고 DEX 파일을 해석하는 'ART(Android runtime)'dptj tlfgodgka

 

02-2 안드로이드 앱 개발의 특징

컴포넌트:애플리케이션의 구성요소

컴포넌트 클래스와 일반 클래스의 차이점:둘다 만드는건 개발자가 만들지만 생명주기관리를 누가 하느냐에 따라. 전자는 '안드로이드 시스템'이 관리하고 후자는 '코드'가 관리함.

컴포넌트의 생명주기를 안드로이드에서 관리하면 코드에서 직접 객체를 생성해 실행할 수 없다

 

안드로이드 컴포넌트 4종류

-액티비티:화면 구성

-서비스:백그라운드 작업, 출력x

-콘텐츠 프로바이더:앱 간의 데이터 공유

-브로드캐스트 리시버:'시스템' 이벤트가 발생할 때 실행되게 하는 컴포넌트. ex. 부팅완료, 배터리방전

 

컴포넌트는 앱 안에서 독립된 실행단위이다.

따라서 한 액티비티에서 다른 액티비티 실행할 때 두 액티비티를 코드로 직접 결합하는 게 아니라 안드로이드 시스템에 의뢰함으로써 두 클래스가 '서로 종속되지 않고 독립해서'실행되게 해야한다.

 

앱 실행 시점이 다양하다.

컴포넌트가 앱 내에서 독립해서 실행되기 때문

예를들면 홈에서 카톡을 여는 게 아니라 알림창에서 알람 클릭하면 바로 채팅방으로 들어가짐.

"안드로이드 앱은 메인함수가 없다."

메인함수: 앱의 단일 시작점

->실행 시점 다양해서 메인함수개념이 없다.

 

 

02-3 앱 구성 파일 분석

프로젝트를 만들면 app이라는 '모듈'이 자동 생성된다.

모듈 하나가 앱 하나이며 프로젝트는 여러 모듈을 묶어서 관리하는 개념이다.

 

그래들(gradle):안드로이드 앱의 빌드 도구

 

플러그인이란?

일반적인 소프트웨어의 일부

웹 브라우저의 일부 기능들을 쉽게 설치하여 사용하게 할 수 있는 프로그램

쉽게 말해, 내가필요한걸 남이 만든 것을 갖다붙여쓴다.

 

네임스페이스: 내부 식별자(형식, 함수, 변수 등의 이름)에 범위를 제공하는 선언적 영역

일반적으로 하나의 이름 공간에서는 하나의 이름이 단 하나의 개체만을 가리키게 된다.

// 네임스페이스 선언(개정 2판)
<application
    android:allowBackup="true"
    android:dataExtractionRules="@xml/data_extraction_rules"
    android:fullBackupContent="@xml/backup_rules"
    android:icon="@mipmap/backup_rules"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher-round"
    android:supportsRtl="true"
    android:theme="@style/Theme.Android:Lab"
    tools:targetApi="31">
    (... 생략 ...)
</application>

 

AndroidManifest.xml(매니페스트파일):앱의 메인 환경 파일. 안드로이드 시스템은 이 파일에 설정한 대로 앱을 실행함.

 

컴포넌트는 시스템에서 생명주기를 관리함.그리고 시스템은 매니페스트 파일에 있는 대로 앱을 실행함.따라서 컴포넌트는 매니페스트 파일에 등록해야 시스템이 '인지'할 수 있음

// 액티비티 선언
<activity
    android:name=".MainActivity"
    android:exported="true"
    <intent-filter>
        <action android:name="android.intent.action.MAIN">
        <cateory android:name="android.intent.category.LAUNCHER">
    </intent-filter>
    
    
    <meta-data>
        android:name="android.app.lib_name"
        android:value="" />
</activity>

       

더보기

TMI겸 일기

아악

3월에 중순에 책 처음 펴고 다시 6월에 시작하게되다니

정말 레전드다

나랑 같이 시작한 사람이 벌써 대충 앱을 만들수 있댄다

클남;

벌써 올해의 반이 끝났네

2월만 지나면 3월만 지나면~ 축제만 끝나면~~~~ 이러다가 벌써 이렇게 됨

너 여태문법만 함

정신차리고 공부만 하자

대충 700쪽이고 14주에 끝내고 강의로 넘어가기

700/14=50쪽

초반에 쉬울때 최대한 스피드 내둬야 뒤쪽에 어려울때 감당가능할듯!

대충 20일까지(마지노 25일) 책 끝내고

6월 마지막주에는 인프런 코틀린 강의 들어가기

얼른 강의 들어가구시포요

 

'깡샘 코틀린' 카테고리의 다른 글

05-1 람다 함수와 고차 함수  (0) 2023.06.15
04-3 코틀린의 클래스 종류  (0) 2023.06.14
04-2 클래스를 재사용하는 상속  (0) 2023.06.14
04-1 클래스와 생성자  (0) 2023.06.13
03 코틀린 시작하기  (0) 2023.06.06