일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Ai
- 유니티
- docker
- elasticsearch
- error
- React
- sample
- unity
- s3
- Linux
- 설정
- Kibana
- JS
- MSSQL
- app
- AWS
- Python
- 영어
- 구글
- JavaScript
- nodejs
- MySQL
- ssh
- API
- ChatGPT
- Windows
- 바보
- build
- mariadb
- Today
- Total
가끔 보자, 하늘.
Flutter 로 앱 개발 및 릴리즈 - 02. 폴더 구조 정리 본문
오늘은 프로젝트의 폴더 구조를 정리해 봤습니다.
프로젝트를 처음 만들면 다음과 같은 폴더 구조를 볼 수 있는데 처음 보니 어질어질하네요.
저 수 많은 폴더를 관리해야 하나 싶어 찾아보니 그건 아닌 듯 했는데, 꽤 손이 많이 가긴 하는 듯 합니다. (아직은 추측이네요. 아무리 Gemini가 아니라고 하지만.. -_-;) Gemini는 다음과 같이 말하네요. 조금 길지만 한번 알고는 넘어가야 할 듯 합니다.
간단한 시작 템플릿이라고 하기에는 폴더 구조가 복잡해 보일 수 있습니다. 특히 여러 OS를 지원하는 프로젝트는 일반적인 Android 프로젝트보다 파일과 폴더가 더 많이 포함되는 경향이 있습니다. 하지만, 모든 폴더를 직접 관리할 필요는 없으니 너무 걱정하지 않으셔도 됩니다.
각 폴더의 역할 및 관리:
템플릿에서 볼 수 있는 주요 폴더들을 살펴보고, 어떤 폴더를 주로 관리해야 하는지, 어떤 폴더는 시스템에서 자동으로 관리하는지를 설명해 드리겠습니다. (현재 제공된 정보가 부족하여 정확한 폴더 구조를 알수 없지만 일반적인 멀티플렛폼 앱을 기준으로 설명드리겠습니다.)
- android 폴더:
- 역할: Android 앱 프로젝트를 포함합니다. 이 폴더 내에는 Android 플랫폼과 관련된 리소스, 매니페스트, 네이티브 코드, 빌드 구성 파일 등이 있습니다.
- 관리:
- 주로 android/app/src/main 폴더 내부의 리소스(레이아웃, 이미지, 문자열 등)를 관리하게 됩니다.
- android/app/build.gradle.kts 파일은 라이브러리 의존성 관리, 빌드 설정 등에 사용합니다.
- android/app/src/main/AndroidManifest.xml 파일은 앱의 구성 요소와 권한을 선언하는 데 사용됩니다.
- 네이티브 코드(Java/Kotlin)를 작성하는 경우, android/app/src/main/java 폴더를 관리합니다.
- android/app/src/main/res 폴더는 drawable, layout, values등 리소스를 관리합니다.
- 일반적으로 android 폴더의 나머지 부분은 대부분 빌드 시스템이 관리하며, 직접 수정할 필요는 거의 없습니다.
- ios 폴더:
- 역할: iOS 앱 프로젝트를 포함합니다. Xcode 프로젝트 파일, 리소스, 네이티브 코드가 포함됩니다.
- 관리:
- ios/Runner 폴더에서 iOS 앱의 네이티브 코드, 리소스 등을 관리합니다.
- ios/Runner.xcworkspace 는 Xcode 프로젝트 파일로 Xcode를 통해 관리합니다.
- 주로 iOS 개발을 할 때 필요한 구성 파일을 관리합니다. 직접적으로 수정할 일은 많지 않을 것입니다.
- lib 폴더
- 역할: 앱의 핵심 소스 코드를 저장하는 폴더입니다. 앱의 대부분의 로직, 위젯, 화면등은 lib 폴더안에 존재합니다.
- 관리: 사용자가 주로 코드를 작성하고 관리하는 영역입니다.
- web 폴더:
- 역할: 웹 앱 프로젝트를 포함합니다. HTML, CSS, JavaScript 파일이 포함됩니다.
- 관리: 웹 앱을 빌드하는 경우에만 직접 관리하며, 그 외에는 대부분 빌드 시스템이 관리합니다.
- macos 폴더:
- 역할: macOS 앱 프로젝트를 포함합니다.
- 관리: macOS 개발을 하는 경우에만 주로 관리하며, 그 외에는 빌드 시스템이 관리합니다.
- linux 폴더:
- 역할: 리눅스 앱 프로젝트를 포함합니다.
- 관리: 리눅스 개발을 하는 경우에만 주로 관리하며, 그 외에는 빌드 시스템이 관리합니다.
- windows 폴더:
- 역할: 윈도우 앱 프로젝트를 포함합니다.
- 관리: 윈도우 개발을 하는 경우에만 주로 관리하며, 그 외에는 빌드 시스템이 관리합니다.
- test 폴더:
- 역할: 테스트 코드를 작성하는 폴더입니다.
- 관리: 단위 테스트나 위젯 테스트를 작성할 때, 여기에 테스트 코드를 추가합니다.
- .gradle 폴더:
- 역할: 프로젝트 빌드와 관련된 정보를 저장하는 폴더입니다.
- 관리: 직접적으로 관리할 필요는 없습니다.
- build 폴더:
- 역할: 프로젝트를 빌드할 때 생성되는 폴더입니다. 빌드 결과물, 중간 파일 등이 저장됩니다.
- 관리: 직접 수정하거나 관리할 필요가 없습니다. 필요에 따라 정리만 하면됩니다.
- pubspec.yaml, pubspec.lock:
- 역할: 프로젝트의 메타 정보(프로젝트 이름, 버전, 의존 라이브러리등)를 포함하는 파일입니다.
- 관리: 사용자가 주로 수정하는 파일입니다. 의존 라이브러리 관리등에 활용됩니다.
- README.md
- 역할: 프로젝트를 설명하는 문서입니다.
- 관리: 사용자가 주로 수정하는 파일입니다. 프로젝트에 대해 설명이 필요할 때 관리됩니다. 소스 코드 위치:
- 핵심 소스 코드: 앱의 핵심 소스 코드는 주로 lib 폴더에 위치합니다. lib/main.dart 파일이 앱의 진입점 역할을 하며, 그 외의 화면, 위젯, 로직 등은 lib 폴더 내의 여러 파일과 하위 폴더에 분산되어 관리됩니다.
- 플랫폼별 네이티브 코드: Android 네이티브 코드는 android/app/src/main/java 폴더에, iOS 네이티브 코드는 ios/Runner 폴더 내에 위치합니다. 각 플랫폼과 직접적으로 상호작용하는 코드를 여기에 작성합니다.
결론:
모든 폴더를 직접 관리해야 하는 것은 아닙니다. 주로 lib, android/app/src/main/res, android/app/src/main/java 등의 폴더와 android/app/build.gradle.kts, pubspec.yaml 과 같은 파일을 관리하게 됩니다. build, .gradle 폴더등은 빌드 시스템이 관리하며, 직접 수정할 필요는 없습니다.나머지 플랫폼별 폴더는 각 플랫폼에 맞게 개발하는 경우에만 관리하면 됩니다. lib 폴더가 핵심 소스코드가 위치하는 곳입니다.
복잡해 보이지만, 실제로 앱 개발을 진행하면서 관리해야 할 부분은 생각보다 많지 않습니다. 특히 멀티플랫폼 앱 개발에서는 lib 폴더가 핵심이 됩니다. 천천히 폴더 구조에 익숙해지시면 더 편하게 개발할 수 있을 것입니다.
(Android Studio 내의 Gemini를 이용했는데 복사 기능도 없고 생각보다 포멧이 깔끔하게 복사되지는 않네요.)
이제 주로 작업할 소스 코드의 위치도 알았으니 다음에는 lib/main.dart를 수정하고 코드를 확장하거나 컴포넌트를 어떻게 추가하고 관리해야 하는지 정리해 보겠습니다.
'개발 이야기 > 개발 및 서비스' 카테고리의 다른 글
Flutter 로 앱 개발 및 릴리즈 - 04. Calendar 페이지 (0) | 2025.05.12 |
---|---|
Flutter 로 앱 개발 및 릴리즈 - 03. Flutter Compoent와 Native Component (1) | 2025.05.09 |
Flutter 로 앱 개발 및 릴리즈 - 01. 생성 및 시뮬레이터 테스트 (0) | 2025.05.07 |
Flutter 로 앱 개발 및 릴리즈 - 00. 마음의 준비 (1) | 2025.05.06 |
Unity 에서 Firebase 연동하기 - 유저 데이터 저장/불러오기 (0) | 2024.12.28 |