안드로이드 공부 계속!
프로젝트 생성 시
app
이라는 모듈이 자동으로 생성된다.
일반적으로 하나의 모듈은 하나의 앱이다. (하나의 앱을 여러 모듈로 나눠 개발도 가능)
하나의 프로젝트 안에 여러 모듈을 추가할 수 있다.
아래는 모듈 폴더의 주요 구성요소이다.
컴포넌트를 이 파일에 등록해야 안드로이드 시스템이 인지한다.
<manifest>
메니페스트 파일의 루트 태그
<application>
앱 전체 대상 설정.
icon : 실행 아이콘. @로 시작하면 res 폴더의 리소스.
label : 앱의 이름 등록.
theme : 앱에 적용한 테마
액티비티는 <activity>, 서비스는 , 브로드캐스트 리시버는 , 콘텐츠 프로바이더는 태그로 등록한다. 컴포넌트 하나당 태그 하나로 등록한다. (액티비티 4개면 액티비티 태그도 4개)
액티비티에는 name 속성에 클래스 이름을 필수로 등록해야 한다.
// 대부분 설정이 모듈 수준의 빌드 파일에서 정해진다.
// * 플러그인 선언
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
// ...
compileSdk = 33 // 컴파일 버전(SDK버전, API레벨)
//...
applicationId = "com.example.androidlab" // 앱의 식별자. 고유한 문자열로 지정해야한다.
minSdk = 21 // 이 앱을 설치할 수 있는 최소 SDK 버전
targetSdk = 33 // 개발시 적용된 SDK 버전
versionCode = 1 // 앱의 버전. 초기값이 1. 업데이트시 이 버전을 올려 배포해야 한다.
versionName = "1.0" // 버전 이름
// * 개발 언어의 버전. 생략시 기본으로 1.6버전.
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
}
// * 앱에서 이용하는 라이브러리의 버전. targetSdk에 명시한 안드로이드 SDK는 기본으로 적용
// 오픈소스나 구글 라이브러리 처럼 SDK 라이브러리가 아닌건 여기에 개발자가 선언해야 한다.
dependencies {
// ...
}
앱의 리소스를 등록하는 목적으로 사용된다.
파일명에는 알파벳 대문자를 사용할 수 없다. 일반적으로 snake_case로 명명한다.
각 리소스 폴더명은 아래와 같이 지정되어있고 각 폴더에 하위폴더는 만들 수 없다.
drawable : 이미지 리소스
layout : UI 구성에 필요한 XML 리소스
mipmap : 앱 아이콘 이미지
values : 문자열 등의 값으로 이용되는 리소스
res/drawable/mylogo1.png 파일이라면 R.drawable.mylogo1 으로 식별된다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
AppCompatActivity를 상속받아 MainActivity 클래스를 정의.
클래스 실행 시 onCreate() 함수가 자동으로 호출되어 함수안의 구문을 실행한다.
setContentView() 함수는 매개변수에 지정한 내용을 액티비티에 출력한다.