본문 바로가기

💻 개발IT/Flutter

Flutter 프로젝트 폴더 구조

프로젝트 구조

Flutter 프로젝트를 생성하고

IDE를 통해 열면 아래와 같은 프로젝트 구조가 나타난다.

 

 

1. .dart_tool/

Dart 2에서부터 .pub 폴더를 대체하는 폴더로,

Dart tool과 Flutter에서 사용하는 파일을 포함하고 있다.

보통 이 폴더에서 아무것도 변경하지 않는다.

 

 

2. .idea/

개발도구에 필요한 설정 파일이다.

보통 이 폴더에서 아무것도 변경하지 않는다.

 

 

3. android/

Android 빌드시 필요한 파일과 코틀린 코드들이 생성되어있는 폴더이다.

Android 네이티브 코드 작성하게 되면 이 폴더에서 작업하게 된다. 

그외 개발 중 이 폴더에서 사용해야하는 파일은 보통 아래와 같다.

  • android/app/build.gradle : 구글 플레이 스토어에 제출할 applicationId 작성
  • android/app/src/main/AndroidManifest.xml : 앱에서 사용할 intent, capability 설정

 

 

4. build/

빌드시 자동 생성되는 폴더이다.

한 프로젝트가 각기 다른 플랫폼에서 앱을 실행하는 데 필요한 파일이 포함되어 있어

각 플랫폼마다 하위 폴더가 존재한다.

 

 

5. ios/

 

iOS 빌드시 필요한 파일과 swift 코드들이 생성되어있는 폴더이다.

iOS 네이티브 코드 작성하게 되면 이 폴더에서 작업하게 된다. 

그외 개발 중 이 폴더에서 사용해야하는 파일은 보통 아래와 같다.

  • ios/Runner/AppDelegate.swift : ios 앱의 진입점을 작성한 파일로 일부 package에서 초기화 로직이 포함되는 경우 작성
  • ios/Runner/info.plist : ios 앱 관련 설정 파일로 일부 권한 요청과 내장된 기능을 사용하기 위해 작성

 

 

6. lib/

기본 플러터 앱 코드가 작성된 main.dart 파일이 존재하며

개발을 위한 코드 구현은 거의 이 폴더 내에서 작성하게 된다.

 

 

 

7. linux / windows / macos

현재 사용 중인 플랫폼에 따라 생성되는 폴더이다. 

 

 

8. test/

테스트 코드가 작성된 파일이 포함된 폴더이다. 

flutter --test

위 명령어를 통해 실행되게 되며, 

flutter에서 테스트 코드 파일을 찾기 위해서 파일명을  _test.dart 로 명명해야한다.

 

 

9. web/

시스템이 웹에서 작동하도록 설정한 경우에만 표시되는 폴더이다.

 

 

10. .gitignore

git으로 작업할 때 무시해야하는 폴더 또는 파일을 작성한 텍스트 파일이다.

 

 

11. .metadata

Flutter에 의해 자동으로 관리되는 파일로

보통 임의로 수정하지 않는다. 

 

 

 

12. analysis_options.yaml

dart 코드 분석을 위한 ruleset 파일이다.

자세한 설정 방법은 아래 사이트 참고

https://dart.dev/guides/language/analysis-options

 

Customizing static analysis

Use an analysis options file and code comments to customize static analysis.

dart.dev

 

 

13. [project-name].iml

Flutter 프로젝트의 추가 설정(주로 폴더 위치 등)이 포함된 파일로 프로젝트 이름을 따라 명명된다.

보통 임의로 수정하지 않는다. 

 

 

14. pubspec.lock

pudspec.yaml을 기반으로 생성된 파일로

이 파일을 삭제하면 pubspec.yaml을 이용해서 다시 생성할 수 있습니다.

 

 

 

15. pubspec.yaml

js의 경우 package.json과 동일한 역할로 아래 정보들이 등록되어있는 파일이다. 

  • 프로젝트의 이름, 설명 및 버전과 같은 일반 프로젝트 설정
  • 프로젝트 종속성
  • Flutter 프로젝트에서 사용할 수 있어야 하는 자산 (ex. image, font)

 

 

반응형