[01. 안드로이드 앱 기본 구조]
[01. 앱 실행 테스트 방법]
1) AVD 가상 기기 이용
-AVD(Android Virtual Device). = 에뮬레이터 사용하여 테스트
2) 실제 스마트폰 이용
-윈도우용 USB 드라이버 설치 -> 스마트폰에 USB 디버깅 허용 -> 앱 실행 테스트
▶[안드로이드 자체 특징]
-공개 OS인 리눅스 기반
-자바/코틀린 이용 개발 가능
▶[안드로이드 OS 구조]
리눅스 커널 | 안드로이드는 리눅스에 기반을 둔 오픈소스 SW 스택 |
하드웨어 추상화 레이어(HAL) | |
안드로이드 런타임(ART) | 앱 실행하는 역할 |
안드로이드 NDK(native development kit) | 네이티브 안드로이드 앱 대상 라이브러리 |
자바 API 프레임워크 | 앱 개발 시 사용하는 자바 API |
▶[안드로이드 버전에 관하여]
-개발자는 운영체제 버전과 API 레벨(SDK 버전) 함께 알고 있어야 함
[02. 안드로이드 앱 개발]
[02. 안드로이드 앱 기본 구조]
[02-1. 안드로이드 소개]
▶[안드로이드 자체 특징]
-공개 OS인 리눅스 기반
-자바/코틀린 이용 개발 가능
리눅스 커널 | 안드로이드는 리눅스에 기반을 둔 오픈소스 SW 스택 |
하드웨어 추상화 레이어(HAL) | |
안드로이드 런타임(ART) | 앱 실행하는 역할 |
안드로이드 NDK(native development kit) | 네이티브 안드로이드 앱 대상 라이브러리 |
자바 API 프레임워크 | 앱 개발 시 사용하는 자바 API |
▶[안드로이드 OS 구조]
▶[안드로이드 버전에 관하여]
-개발자는 운영체제 버전과 API 레벨(SDK 버전) 함께 알고 있어야 함
[02-2. 안드로이드 앱 개발]
➀ [컴포넌트 기반 개발]
-컴포넌트 = 애플리케이션 구성요소. 단위. 독립된 실행 단위
-하나의 애플리케이션은 여러 ㅋ머포넌트로 구성됨
[안드로이드 앱 구성 클래스 구분] -일반 클래스 : 생명주기를 개발자 코드에서 관리함 -컴포넌트 클래스 : 생명주기를 안드로이드 시스템에서 관리함 |
-통상, 하나의 클래스가 하나의 컴포넌트
▶[안드로이드 컴포넌트 종류]
액티비티 | -앱 화면 구성 컴포넌트 -[Activity 클래스 상속받아야 함] |
서비스 | -백그라운드 작업 컴포넌트 -[Service 클래스 상속받아야 함] |
콘텐츠 프로바이더 | -앱의 데이터 공유하는 컴포넌트 -[ContentProvider 클래스 상속받아야 함] |
브로드캐스트 리시버 | -시스템 이벤트 발생 시 실행되게 하는 컴포넌트 -[BroadcastReceiver 클래스 상속받아야 함] |
▶[컴포넌트 특징]
-컴포넌트는 앱 안에서 독립된 실행 단위. 종속X
-앱 내에서 독립 실행 되므로, 앱 실행 시점이 다양함
-> 컴포넌트 생명주기를 안드로이드 시스템에서 관리. -> 기존 자바 : (두 클래스 객체의 코드를 결합하여 객체 생성 -> 실행 ) -> 안드로이드 : (두 클래스 컴포넌트 독립 실행단위. 안드로이드 시스템에 다른 클래스 실행 의뢰 -> 이유 : 컴포넌트 생명주기를 시스템에서 관리하기 때문. |
-앱 라이브러리 사용 O. 다른 앱을 이용해서 라이브러리처럼 활용하여 연동 O
➁ [리소스 활용한 개발]
-리소스 : 코드에서 정적인 값 분리해놓은 항상 같은 값. XML 파일로 작성
-사용자 이벤트에 따른 동적 값이 아닌, 항상 똑같은 값에 대해서는 분리 개발이 효율 높음
-따라서, 항상 똑같은 요소에 대해, 코드에 담지 않고, 리소스로 등록하여 반복 사용
-ex. 문자열/색상/크기/레이아웃/이미지/메뉴 등
[02-3. 앱 구성 파일 분석 ]
[프로젝트 폴더 구성]
-프로젝트 만들면 app 모듈 자동 생성됨.
모듈 = 앱 단위.
프로젝트 = 여러 모듈 묶어 관리.
[모듈 폴더 구성]
build.gradle | 빌드 설정 파일 |
AndroidManifest.xml | 앱 메인 환경 파일 |
res | 리소스 폴더 |
acticity_main.xml | 레이아웃 XML 파일 |
MainActivity.kt | 메인 액티비티 파일 |
▷[그레이들 빌드 설정 파일] : build.gradle 파일
-Gradle : 안드로이드 앱 빌드 도구.
–프로젝트 수준 파일 |
-모듈 수준 파일 |
-앱 빌드에 필요한 설정을 이 파일 내부에 등록
中. 모듈 수준 Gradle 파일 열어보면 몇 가지 설정 자동 등록되어 있음
plugins { // 플러그인 선언 id 'com.android.application' id 'org.jetbrains.kotlin.android' } android { compileSdk 32 //컴파일 버전 설정 defaultConfig { applicationId "com.yong.androidlab" // 앱 식별자 설정 (고유 문자열 지정) minSdk 21 //이 앱 설치 가능한 SDK의 최소 버전 설정 targetSdk 32 //개발 적용하는 SDK 버전 설정 versionCode 1 //앱의 버전 설정 (이후 업데이터 될 때마다 버전 올려서 배포) versionName "1.0“ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } // 개발 언어의 버전 t jfwjd compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } } dependencies { // 앱에서 이용하는 라이브러리 버전 설정 -> targetSDK 설정한 SDK 이외에 추가한 라이브러리는 모두 여기에서 선 언필요 implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' } |
▷[메인 환경 파일] : AndroidManifest.xml 파일
<?xml version="1.0" encoding="utf-8"?> // 네임스페이스 선언 package="com.example.ch6_view"> //앱 전체 대상 설정 <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" //앱 아이콘 이미지 설정 android:label="@string/app_name" //앱 이름 등록 android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.AndroidLab"> //앱에 적용 테마 설정 //액티비티 선언 <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
-앱 메인 환경 파일
-시스템에서 안드로이드 컴포넌트 생명주기 관리
-시스템은 매니페스트 파일 대로 앱을 실행
- 액티비티 : <activity> 태그로 등록 - 서비스 : <service> 태그로 등록 - 브로드캐스트 리시버 : <reciever> 태그로 등록 - 콘텐츠 프로바이더 : <provider> 태그로 등록 |
-결국, 매니페스트 파일에 컴포넌트를 등록해야 시스템이 인지할 수 O
▷[리소스 폴더] : res 폴더
-앱의 리소스 등록 목적 사용
drawable | 이미지 리소스 |
layout | UI 구성에 필요한 XML 리소스 |
mipmap | 앱 아이콘 이미지 |
values | 문자열 등의 값으로 이용되는 리소스 |
-res 폴더 아래에 기본 생성 폴더.
-리소스 파일이 R.java 파일에 상수 변수로 등록되고 이 변수로 코드에서 리소스 이용함
-> 단, 아래의 규칙을 반드시 따를 것.
res 하위 폴더명은 반드시 지정된 폴더명만 사용 각 리소스 폴더에 대해 다시 하위 폴더 정의 불가 리소스 파일명은 자바 이름규칙 위배 불가 리소스 파일명에 알파벳 대문자 이용 불가 |
▷[레이아웃 XML 파일] : activity_main.xml 파일
-화면 구성 레이아웃 XML 파일
▷[메인 액티비티 파일] : MainActivity.kt 파일
-매니페스트 파일의 설정값에 따라,
폰에 앱 설치 후 앱 아이콘 터치하면 메인 액티비티 파일 실행된다.
-화면 출력 목적의 액티비티 클래스
class MainActivity : AppCompatActivity() { //AppCompatActivity 상속받은 하위 클래스 override fun onCreate(savedInstanceState: Bundle?) { // 내부 자동 호출될 메소드(함수) super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) //내부의 내용을 화면에 출력하는 함수 } } |
'App(앱)_관련 공부 모음 > [교재] Andorid App_Kotlin 기반' 카테고리의 다른 글
06. [뷰를 이용한 화면 구성] (0) | 2022.03.07 |
---|---|
05. [코틀린의 유용한 기법] (0) | 2022.03.04 |
04.[ 코틀린 객체지향 프로그래밍] (0) | 2022.03.04 |
03.[코틀린 Kotlin 기본] (0) | 2022.03.04 |
01. [Android Studio] 기본 환경설정 (0) | 2022.02.28 |