티스토리 뷰

728x90

 


* 프로젝트 뷰

• 안드로이드 스튜디오에서 프로젝트의 구조를 보기 위해서는 프로젝트 뷰를 이용한다.

• 안드로이드 스튜디오의 프로젝트 뷰는 사용자가 설정한 것에 따라 구조를 다르게 볼 수 있다.

• 개발자들이 보통 개발할 때 주로 사용하는 Android 설정을 기준으로 구조를 파악할 것이다.

• 자세한 것은 아래의 포스팅을 참고

[📱Android/📘기타] - 안드로이드 스튜디오 프로젝트 뷰

 

[Android/기타] 안드로이드 스튜디오 프로젝트 뷰

안드로이드 스튜디오 프로젝트 뷰 • 안드로이드 스튜디오에서 프로젝트의 구조는 프로젝트 뷰에서 볼 수 있다. • 안드로이드 스튜디오의 프로젝트 뷰는 설정에 따라 프로젝트 구조를 다르

apro-developer.tistory.com

 

프로젝트

소스 코드, 이미지 등의 자료, 테스트 코드, 빌드 설정 등 앱을 만들기 위한 모든 항목이 포함된 작업 공간.

     - 개발자용 안드로이드 공식 문서의 정의이다.

• 프로젝트는 크게 모듈들과 그 모듈들에 대한 빌드 설정들로 구성되어 있다.

     - 모듈이란 하는 일과 기능에 따라 개별적으로 나눠놓은 묶음인데, 하나의 앱이 될 수도 있고, 하나의 라이브러리가 될 수도 있다.

     - 즉, 하나의 프로젝트는 기능에 따라 A기능을 하는 앱 모듈, B기능을 하는 라이브러리 모듈, C기능 모듈, D기능 모듈... , 그리고 이 모듈들을 빌드하기 위한 설정으로 구성되고, 이를 합쳐  A + B + C + D 일을 하는 앱이 되는 것이다.

     - 처음 새 프로젝트를 생성하면 기본으로 app과 Gradle Scripts가 생성되는데, 여기서 app이 모듈, Gradle Scripts가 빌드 설정이다.

프로젝트 생성 시 app과 Gradle Scripts로 구성되어 있다.

 

모듈

• 모듈은 환경 설정 파일 + 소스 코드 + 리소스로 구성된다.

     - manifests : 환경 설정 파일

     - java : 소스 코드

     - res : 리소스(이미지 등의 자료)

app모듈 = manifests + java + res

 

1. manifests

• 해당 모듈의 환경 설정 파일, 설계도.

• AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.fastcampus">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.FastCampus"
        tools:targetApi="31">
        <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>

• <manifest> : manifest 시작

     - package : 패키지 이름. 이 앱의 고유한 아이디가 된다.

• <application> : 애플리케이션에 대한 설정

     - allowBackup : 사용자의 데이터가 구글 클라우드에 백업이 되는지 = 앱을 삭제하고 다시 설치해도 기록이 남아 있는지.

     - icon, roundIcon : 아이콘

     - label : 앱의 이름

     - supportsRtl : 나라에 따라 글자 방향 RTL 지원할 것인지.

     - theme : 테마 설정

• <activity> : 나중에 자세히 설명. 간단하게 말하면 화면 1장을 의미.

     - name : 액티비티 이름

     - exported : 다른 앱 또는 시스템에서 해당 액티비티를 호출할 수 있게 할 것인지 여부. 앱의 첫 화면은 무조건 true를 해야 한다. 

• <intent-filter> : 인텐트 시 선택하는 것. 나중에 자세히 설명.

 

2. java

• 앱에 들어가는 자바나 코틀린 소스 코드.

• 패키지명, 패키지명(test), 패키지명(androidTest) 3개가 있다.

     - test, androidTest 폴더는 자동 생성되는 폴더로, 테스트 코드를 작성할 때 사용된다. 아직은 신경쓰지 않아도 된다.

     - 패키지명 폴더 안에 있는 MainActivity 파일이 소스 코드이다.

 

3. res

• 이미지 등 앱을 만들 때 필요한 자료들(=리소스)을 보관하는 폴더이다.

• 자세한 것은 아래의 포스팅을 참고

[📱Android/🔍UI] - 13. Resource(리소스)

 

[Android/UI] 13. Resource(리소스)

Resource • 반복적으로 사용할 수 있는 자원 • res 폴더에 저장 - 사용 방법 : @리소스종류/리소스명 • 종류  - drawable, layout, mipmap, values... 1. drawable • 이미지 리소스 파일  - .jpg, .png, .....

apro-developer.tistory.com

 

4. generated

• java나 res 폴더 옆에 (generated) 라고 되어 있는 폴더들은 자동으로 생성되는 폴더로써, 건들이지 않아도 된다.

 

빌드 설정

• 프로젝트에서 app 등의 모듈들이 아닌 Gradle Scripts에 해당하는 부분이다.

Gradle Scripts

빌드란 개발자가 만든 소스 코드와 리소스를 포함한 각종 라이브러리와 모듈들을 합치고, 안드로이드가 알아들을 수 있는 언어로 번역하고 등의 과정을 통해 실제 실행되는 애플리케이션을 만드는 과정을 뜻한다.

• 안드로이드에서는 빌드를 하기 위해 Gradle이라는 도구를 사용한다.

• Gradle로 빌드하기 위한 설정을 모아놓은 곳이 Gradle Scripts라고 이해하면 쉽다.

 

1. build.gradle

• 빌드를 어떻게 할 것인가 설정을 적는 파일.

• 모듈마다 하나씩 있고, 프로젝트 용도 있다. 즉, 각각의 모듈에 대한 빌드 설정을 할 때는 build.gradle (Module) 파일에, 이 프로젝트 전체에 대한 빌드 설정을 할 때는 build.gradle (Project) 파일에 한다. 

• build.gradle (Project)

     - repositories : repo라고 부른다. 원격 저장소.

     - dependencies : 의존성. 즉, 프로젝트를 만들기 위해 의존해야할 것들. 우리는 Kotlin과 gradle에 의존하고 있다.

• build.gradle (Module)

     - compileSdk : 해당 안드로이드 버전 용으로 앱이 빌드된다. 안드로이드는 하위호환이 되기 때문에 이 버전 이전의 버전도 앱을 사용할 수 있다. 즉, 최대 지원 버전이다.

     - minSdk : 최소 지원 버전.

          -> 최소 버전과 최대 버전을 너무 넓게 잡으면, 고려해야 할 사항이나 지원해야 할 기능이 너무 많아짐. 

최소 5.0까지만 지원해도 98.8 퍼센트의 이용자가 사용 가능하다.

     - targetSdk : 테스트 되는 버전. compileSdk과 맞추는 것이 좋다.

     - versionCode, versionName : 앱의 버전. 수정하면서 점점 올라간다. 큰 변화가 있으면 정수 부분, 작은 수정이 있으면 소수 부분이 올라간다.

     - testInstrumentationRunner : 테스트 코드를 작동시킬 러너 설정.

     - buildTypes : 배포 타입으로 빌드할지 등을 수정할 수 있다.

     - minifyEnabled : 코드, 리소스 축소, 난독화, 최적화 등 크기를 줄임. 요즘은 휴대폰 용량이 커서 신경쓰지 않아도 된다.

     - proguardFiles getDefaultProguardFile : 코드 난독화 시 사용할 도구.

     - compileOption : 컴파일 옵션

     - kotlinOption : 코틀린 옵션

     - jvmTarget : jvm 버전.

     - defendencies : 해당 앱이 사용할 의존성

 

2. 그 외

• build.gradle을 제외한 나머지 것들은 거의 만질 일이 없다.

• 필요할 때 검색해보고 사용하면 된다.

 

참고 글

https://curryyou.tistory.com/366

 

[안드로이드] 앱 프로젝트 구조

# 프로젝트란 ? SW개발을 위해 필요한 소스코드, 리소스 및 데이터, 환경설정 파일 등을 통합적으로 관리하는 구조를 말한다. 보통 서버나 앱을 개발 할 때, 폴더를 하나 만들고 모든 코드와 파일

curryyou.tistory.com

https://leveloper.tistory.com/201

 

[Android] Multi Module로 Android project 구성하기

 최근에 회사에서 프로젝트를 진행하며 신입 때 작성했던 코드를 수정해야 하는 일이 생겼습니다. 첨부파일 업로드, 다운로드 관련 기능을 제공하는 클래스들이었는데, 당시 아키텍처에 대한

leveloper.tistory.com

 

 

 

 

 

 

 

이 글은

패스트 캠퍼스 Android 앱 개발의 정석 with Kotlin 올인원 패키지 Online

강의를 듣고 공부한 내용을 바탕으로 작성되었습니다.

 


728x90
댓글
공지사항