Android 입문 2주차

신지원·2024년 6월 24일

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
profile
제 블로그에 오신 여러분 반갑습니다. welcome to malgam world!

0개의 댓글