malgam.log
로그인
malgam.log
로그인
Android 입문 2주차
신지원
·
2024년 6월 24일
팔로우
0
TIL
Android
목록 보기
2/4
안드로이드 스튜디오 프로젝트 구조
앱 구성 파일 분석
Gradle 빌드 설정 파일
Gradle은 안드로이드 앱의 빌드 도구임
Gradle의 설정 파일이 바로 build.gradle
프로젝트 수준의 build.gradle(Project:AndroidLab)
모듈 수준의 build.gradle(Module:AndroidLab.app)
메니페스트 파일
메니페스트 파일이란?
앱의 기본 특징을 설명하고, 앱의 구성요소인 컴포넌트 (예: 액티비티, 서비스등)를 정의한 XML파일
< manifest >태그의 package속성
이 앱의 고유한 식별자 역할을 하는 패키지 이름이 정의
< application >태그
이 앱을 구성하고 있는 컴포넌트를< application >태그 하위에 정의
컴포넌트 종류에 따른 태그
액티비티의 경우< activity >요소
서비스의 경우< service >요소
브로드 캐스트 수신기의 경우< receiver >요소
콘텐츠 제공자의 경우< provider >요소
< activity >태그
android
: name 속성이 Activity 서브 클래스의 완전히 정규화된 클래스 이름을 나타냄
여기서는 이름이 Main Activity인 Activity 서브 클래스가 앱을 구성하는 유일한 컴포넌트임
< intent-filter >태그
안드로이드 컴포넌트(예,< activity >태그)하위에 포함되는 태그로서, 해당 컴포넌트가 수신 할수 있는 인텐트를 걸러내는 역할을 수행
MainActivity인 액티비티 컴포넌트가 앱을 시작시키는 시작 점으로서, 애플리케이션 런처 (예,홈스크린)에 등록되어 있음을 나타냄
리소스 파일
리소스 파일이란?
애플리케이션 리소스 (예: 이미지 혹은 문자열)를 코틀린 코드에서 분리하여 독립적으로 유지/관리 할 수 있도록 함으로써, 다양한 환경 변화(예,화면크기 변화 혹은 사용 언어 변경)를 코드의 변경 없이 수용 할 수 있음
예를 들어, 여러 가지 화면 크기에 따라 여러가지 UI레이아웃을 리소스 파일로 제공하거나, 언어 설정에 따라 각기 다른 문자열을 리소스 파일로 제공 할 수 있음
리소스 폴더
drawable
: 이미지 리소스
layout
: UI구성에 필요한 XML 리소스
mipmap
: 앱 아이콘 이미지
values
: 문자열 등의 값으로 이용되는 리소스
주의
res 하위의 폴더 명은 지정 된 폴더 명을 사용해야 함
각 리소스 폴더에 다시 하위 폴더를 정의 할 수는 없음
리소스 파일 명에는 알파벳 대문자를 이용 할 수 없음
File - based resource names must contain only
lowercase a~z, 0~9, or underscore(_)
예시
aapt도구란?
애플리케이션 리소스를 컴파일하여 컴파일 된 리소스 (R클래스와 패키지 된 리소스 파일)을 생성함
R.java
aapt도구에 의해 자동으로 생성 된 파일
R클래스는 리소스를 kotlin 프로그램에서 접근하기 위한 리소스 ID를 정의
코틀린 소스 파일
코틀린 소스 파일이란?
Android앱은 코틀린 프로그래밍 언어로 작성
MainActivity.kt
MainActivity.kt 은 무엇일까?
안드로이드 프로젝스 생성 시에 자동으로 만들어진 코틀린 파일
package
com.android.helloworld
MainActivity 클래스가 속한 패키지
안드로이드 프로젝트 생성 시에 설정 된 이름
class MainActivity
: AppCompatActivity()
안드로이드 액티비티는 Activity의 서브 클래스임
AppCompatActivity는 Activity의 서브 클래스로서 하위 플랫폼 버전을 지원
override fun
onCreate
(savedInstanceState : Bundle?)
안드로이드 플랫폼이 호출하는 메소드로서 액티비티가 생성되는 순간에 딱 한 번 호출됨
주로 액티비티와 관련된 변수 초기화 및 사용자 인터페이스 설정 코드를 포함함
setContentView
(
R.layout
.activity_main)
R.layout.activity_main이 가리키는 리소스를 이 액티비티의 콘텐츠뷰로 사용하겠다는 의미
R.layout.activity_main은 res/layout 폴더에 있는 activity_main.xml을 가리키는 정적 상수 (R 클래스에서 정의됨)
프로젝트 빌드
프로젝트 빌드
Android빌드 시스템은 앱 리소스 및 소스 코드를 컴파일하고, 배포 할 수 있는 APK로 패키징함
AndroidStudio는 고급 빌드 툴 킷인 Gradle을 사용하여 빌드 프로세스를 자동화하고 관리
빌드 프로세스
빌드 프로세스의 구조
컴파일러 역할
소스 코드를 DEX(Dalvik Executable)파일로 변환하고 그 외 모든 것을 컴파일 된 리소스로 변환함
aapt도구는 리스소 파일(/res폴더 하위 파일)들을 컴파일 된 리소스 (R 클래스 파일과 패키지된 리소스 파일)로 변환 시킴
kotlinc 컴파일러는 kotlin 소스 파일(자동으로 생성된 R.java와 사용자가 정의한 .kt파일)을 kotlin 클래스 파일(.class확장자)로 변환시킴
dx안드로이드 개발도구는 컴파일된 kotlin 클래스 파일을 DEX파일(.dex확장자)로 변환시킴
이 DEX파일에는 Android기기에서 실행되는 바이트코드가 포함 됨
APKPackager
DEX파일과 컴파일된 리소스를 단일 APK에 결합함
앱을 Android기기에 설치하고 배포하기 위해서,
APKPackager
는 디버그 또는 릴리스 키스토어를 사용하여 APK를 서명
디버그 버전의 앱
(즉,테스트 및 프로파일링 전용의 앱)
빌드 중인 경우에는, 패키저가 디버그 키스토어로 앱에 서명함
AndroidStudio는 디버그 키스토어로 새 프로젝트를 자동으로 구성함
릴리스 버전의 앱
(즉, 외부에 릴리스할 앱)
빌드 중인 경우에는, 패키저가 릴리스 키스토어로 앱에 서명함
최종 APK를 생성하기 전
패키저는 기기에서 실행 될 때 더 적은 메모리를 사용하도록 앱을 최적화하기 위해 zipalign도구를 사용함
빌드 구성 파일
빌드는 어떻게 구성할까?
build.gradle(Project level)
build.gradle
루트 프로젝트 디렉토리에 있는 최상위 build.gradle파일은 프로젝트의 모든 모듈에 적용되는 빌드 구성을 정의
settings.gradle
settings.gradle
앱을 빌드할 때 어떤 모듈을 포함할지를 Gradle에 알려 줌
대부분의 프로젝트에서 이 파일은 간단하며 다음 코드 만을 포함 함
build.gradle(Modulelevel)
build.gradle
신지원
제 블로그에 오신 여러분 반갑습니다. welcome to malgam world!
팔로우
이전 포스트
Android 입문 1주차
다음 포스트
Android 입문 3주차
0개의 댓글
댓글 작성