[Flutter]여러 패키지 한 프로젝트로 관리하기

yong·2025년 5월 19일

flutter

목록 보기
2/4

회사에서 같은 컨셉의 앱을 여러 국가에 배포를 하려다 보니 프로젝트를 여러개 만들어 버전을 관리해야 되는 상황이 생겼다.

Ex) com.test.app.kr, com.test.app.kh, com.test.app.mn 등등.. 뒤에 국가코드를 붙여 프로젝트를 나누어 개발하고 있었음

이렇게 개발을 하니 하나의 수정사항이 발생하면 똑같은 코드를 각 다른 국가 프로젝트에서 수정을 일일이 혼자서 해야되는 번거로움이 발생해 하나의 프로젝트로 뒤의 국가코드만 변경해서 빌드할수있도록 개발을 하려고 한다!

패키지 이름 통일과 분리

  • 우선 패키지 이름은 com.test.app으로 중심 프로젝트를 잡고 그 뒤에 kr,mn등 원하는 이름을 붙여 나눌수있다.
  • flutter는 패키지 식별 id와 번들 id가 네이티브 레벨에서 결정되기 때문에 각 네이티브 수준에서 변경을 해줘야 된다.

1. Android

android/app/build.gradle 파일에서 android{ .. } 블록 안에 flavorDimensions, productFlavors를 추가하면 된다.

- flavorDimensions, productFlavors?

Gradle Plugin에서 build variant를 정의하는 두가지 키워드로
fravorDimensions는 분류하는 차원을 선언하는 곳이며
productFlavors는 실제 빌드할 여러가지 앱을 선언하는 곳.
각 flavor는 dimension 속성으로 위에서 선언한 flavorDimensions 중 하나를 선택할수 있음.

android{
flavorDimensions "country"

productFlavors{
	kr{
    	dimension "country"
    	applicationIdSuffix ".kr"
    }
    us {
    	dimension "country"
		applicationIdSuffix ".kr"
    }
  }
}

(선택) 만약 각 flavor별로 다른 리소스를 쓰고 싶다면

android/app/src/kr/... , android/app/src/us/...등 폴더를 생성해서 쓰면 됨

2. iOS

2-1. Runner.xcworkspace열기

2-2. Info -> configurations

2-3. 기본 Debug/Release 외에 kr-Release, us-Release 등 새 Configuration 생성

2-4. Scheme 만들기

  • Scheme는 어떻게 빌드를 하고 어떻게 정의할건지 실행 구성 프로파일로
    상단 툴 바에서 Scheme를 누른 뒤 -> Manage Schemes…를 선택
    +버튼을 눌러 Scheme이름을 설정해주면 된다.

만약 debug,release 따로 Configurations를 등록하려면

Runner의 xcconfig를 변경해주면 된다.

2-5. Bundle Identifier 설정

Runner 클릭 후 Signing & Capabilities 탭으로 이동 후

각 탭의 패키지 이름을 바꿔주면 된다.

2-6. info.plist따로 쓸거면

  1. Xcode에서 Runner 프로젝트 → Runner 타겟 → Build Settings

  2. Packaging 섹션의 Info.plist File 항목을 찾습니다.

  3. 기본값인 (SRCROOT)/Runner/Info.plist대신(SRCROOT)/Runner/Info.plist 대신(SRCROOT)/Runner/Info-kr.plist (또는 실제 존재하는 파일명) 으로 변경

2-7. 앱마다 icon다르게 보고 싶으면

  1. Xcode에서 Runner 프로젝트 → Runner 타겟 → Build Settings

  2. Assets에서 파일 생성해주고
    사진 등록

  3. ASSETCATALOG_COMPILER_APPICON_NAME 검색

  4. icon이름 변경

3. 실행

  • AOS

flutter run --flavor kr -t lib/main.dart
  • iOS
flutter build ios --flavor kr -t lib/main.dart

4. 에러 기록..

https://velog.io/@sybaek97/iOS-Command-PhaseScriptExecution-failed-with-a-nonzero-exit-code

profile
배우고 경험한거 꾸준히 복습

0개의 댓글