ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] 어플리케이션 구성 파일
    안드로이드 2024. 3. 18. 19:56

    📝 공부한 Kotlin 정리

     

    [Mainfest 파일]

    앱의 기본 특징을 설명하고, 앱의 구성요소인 컴포넌트 (예: 액티비티, 서비스등)를 정의한 XML파일이다.

    • <manifest>태그의 package속성
      - 이 앱의 고유한 식별자 역할을 하는 패키지 이름이 정의
    • <application>태그
      - 이 앱을 구성하고 있는 컴포넌트를<application>태그 하위에 정의
      - 컴포넌트 종류에 따른 태그
      • 액티비티의 경우<activity>요소
      • 서비스의 경우<service>요소
      • 브로드 캐스트 수신기의 경우<receiver>요소
      • 콘텐츠 제공자의 경우<provider>요소
    • <activity>태그
      - android : name 속성이 Activity 서브 클래스의 완전히 정규화된 클래스 이름을 나타냄
    • <intent-filter>태그
      - 안드로이드 컴포넌트(예,<activity>태그)하위에 포함되는 태그로서, 해당 컴포넌트가 수신 할수 있는 인텐트를 걸러내는 역할을 수행
      - MainActivity인 액티비티 컴포넌트가 앱을 시작시키는 시작 점으로서, 애플리케이션 런처 (예,홈스크린)에 등록되어 있음을 나타냄

    [코틀린 소스 파일]

    • 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 클래스에서 정의됨)

    [리소스 파일]

    어플리케이션 리소스 (예: 이미지 혹은 문자열)를 코틀린 코드에서 분리하여 독립적으로 유지/관리할 수 있도록 함으로써, 다양한 환경 변화(예,화면크기 변화 혹은 사용 언어 변경)를 코드의 변경 없이 수용할 수 있다.

    • 리소스 폴더
      • 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를 정의

    [빌드 구성 파일]

    새 프로젝트를 시작할 때, 아래와 같이 안드로이드 스튜디오가 프로젝트 구조를 생성하고, 빌드 구성 파일(build.gradle(project level), setting.gradle, build.gradle(module level) 등)을 자동으로 만들고, 적합한 기본값에 따라 파일에 값을 채웁니다.

    • build.gradle(Project level)
      루트 프로젝트 디렉토리에 있는 최상위 build.gradle파일은 프로젝트의 모든 모듈에 적용되는 빌드 구성을 정의
    • settings.gradle
      • 앱을 빌드할 때 어떤 모듈을 포함할지를 Gradle에 알려준다.
      • 대부분의 프로젝트에서 이 파일은 간단하며 다음 코드만을 포함한다.
        include ':app'​
    • build.gradle(Module level)

    [프로젝트 빌드]

    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를 서명한다.
        1. 디버그 버전의 앱 (테스트 및 프로파일링 전용의 앱)
          - 빌드 중인 경우에는, 패키저가 디버그 키스토어로 앱에 서명
          - AndroidStudio는 디버그 키스토어로 새 프로젝트를 자동으로 구성
        2. 릴리스 버전의 앱 (외부에 릴리스할 앱)
          - 빌드 중인 경우에는, 패키저가 릴리스 키스토어로 앱에 서명
      • 최종 APK 생성 전:
        패키저는 기기에서 실행 될 때 더 적은 메모리를 사용하도록 앱을 최적화하기 위해 zipalign도구를 사용한다.

     

Designed by Tistory.