[Android] 안드로이드 프로젝트 구조 설명

    안드로이드로 Activity를 설정하고 프로젝트를 생성하였다면, 좌측에 아래와 같은 프로젝트 구조가 보일 것입니다. 아직 안드로이드 개발을 시작한지 얼마 안된 분들이라면 구조가 이질적으로 느껴지실 수 있으실텐데 오늘은 구조에 대해서 설명을 해보도록 하겠습니다.

     

    프로젝트 구조

    그림 1. 프로젝트 구조

     

    위는 제가 이제 막 프로젝트를 생성하여 만든 프로젝트의 모습입니다. 대분류로는 app과 Gradle Scripts가 있고, app 밑에는 manifests, java, res가 있습니다.

     

    Gradle Scripts

    우선 Gradle Scripts에 대해서 설명을 하자면 프로젝트를 위해서 필요한 라이브러리나 빌드, 구성 등을 설정하는데 사용되는 정보들입니다. 즉 개발 코드와는 상관이 없이 개발을 위해서 서포트를 하는 스크립트들이라 볼 수 있습니다.

     

    dependencies

    dependencies {
    
        implementation 'androidx.core:core-ktx:1.7.0'
        implementation 'androidx.appcompat:appcompat:1.4.1'
        implementation 'com.google.android.material:material:1.5.0'
        implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
        testImplementation 'junit:junit:4.13.2'
        androidTestImplementation 'androidx.test.ext:junit:1.1.3'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    }

     

    위 예시는 build.gradles에 있는 dependencies 정보로 프로젝트에 필요한 외부 라이브러리를 불러들여 해당 프로젝트에 내장을 시키게 됩니다. 그 밖에 자바(Java) 버전 설정, SDK 설정, 플러그인 설정 등 이런 다양한 설정들을 하는 것이 Gradle Scripts라 생각하시면 될 것 같습니다.

     

    app

    app에서는 크게 3가지의 구조가 있었습니다. 하나는 manifest 또 하나는 java 마지막으로 res가 있습니다. 이 중 manifest는 개발을 진행하면서 별도로 설명할 시간이 있을 것이기에 여기서는 설명에서 제외하며, java와 res에 대해서 설명해보도록 하겠습니다.

     

     

    java

    안드로이드의 대표적인 언어하면 다들 떠올리는 것으로 자바(Java)를 생각하실 겁니다. 사실 오라클과 구글이 Java로 인해서 상당히 오랜기간 다투기도 하였는데 다투지 않았다면 안드로이드에서 첫번째 언어로 자바를 버리고 코틀린을 선택하는 일은 없지 않았을까 생각합니다.

     

    자바는 말그대로 코드가 존재하는 위치입니다. 즉 자바 및 코틀린으로 만들어진 코드들이 해당 폴더에 존재하게 됩니다. 근데 폴더가 3개나 있어서 헷갈릴 수 있습니다.

     

    3개의 폴더로 이루어진 java 그룹

     

    여기서 꼭 필요한 코드는 바로 최상단에 위치한 폴더이며, 아래 2개 androidTest와 test폴더는 동작이 잘되고 있는지 테스트를 위한 코드가 있는 자리로, 필수는 아닙니다.

     

    일반적으로 자바 프로젝트를 생성하게 되면, test 폴더도 같이 생기는데 여기서는 2개가 생긴 이유가 무엇이냐면 하나는 순수한 Unit Test를 위함이고 나머지 하나는 안드로이드 테스트를 위함입니다. 

     

    res

    res는 리소스(Resource)라는 의미로, res를 펼치면 아래와 같은 구조로 되어 있습니다.

     

     

    drawble, layout, mipmap, values로 되어 있는데 각각에 대한 기능은 아래와 같습니다.

     

    drawble

    이미지 및 그래픽을 어떻게 표현할 지를 설정합니다.

     

    layout

    화면의 UI를 담당하는 레이아웃 리소스입니다.

     

    layout 리소스에 있는 activity_main.xml

     

    mipmap

    어플리케이션 아이콘 등 이미지를 표시합니다.

     

    mipmap 소스 예시

     

    values

    문자열, 컬러 등을 설정합니다.

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="purple_200">#FFBB86FC</color>
        <color name="purple_500">#FF6200EE</color>
        <color name="purple_700">#FF3700B3</color>
        <color name="teal_200">#FF03DAC5</color>
        <color name="teal_700">#FF018786</color>
        <color name="black">#FF000000</color>
        <color name="white">#FFFFFFFF</color>
    </resources>

    위 resources 파일을 보면, color name과 RGB 컬러값이 매핑한 값을 확인할 수 있습니다.

     

     

    반응형

    댓글

    Designed by JB FACTORY