300x250
Flutter는 안드로이와 iOS 모두 앱으로 만들어서 배포할 수 있다.
여기서는 안드로이드 배포와 관련한 간단한 방법들을 알아보자.
1. 앱 성능 테스트: Profile & Release 모드
앱 성능을 테스트하거나 최적화하려면 profile과 release 모드를 활용
// 자세한 성능 정보 확인
flutter run --profile
// 최적화된 앱 성능 확인
flutter run --release
2. Android APK 생성
2.1. 준비 단계
APK 생성 전에 앱을 최적화하려면 아래 사항들을 확인.
- proguard-rules.pro 파일 작성
- 앱 난독화와 최적화를 위한 설정 파일. 프로젝트의 android/app/ 디렉터리에 proguard-rules.pro 파일을 생성하고 필요한 규칙을 추가.
- 예:
# Flutter 관련 클래스 유지 -keep class io.flutter.app.** { *; } -keep class io.flutter.plugin.** { *; } -keep class io.flutter.util.** { *; } -keep class io.flutter.view.** { *; } -keep class io.flutter.** { *; } -keep class io.flutter.plugins.** { *; } -dontwarn io.flutter.embedding.**
- build.gradle 설정
- android/app/build.gradle 파일의 buildTypes 섹션에서 release 설정을 다음과 같이 구성
- 이 설정은 R8 컴파일러를 사용하여 코드 축소, 난독화, 최적화를 수행. 자세한 내용은 Android 공식 문서를 참고
- 예:
buildTypes { release { signingConfig signingConfigs.release // 코드 난독화 및 리소스 축소 설정 minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
2.2. APK 빌드 명령어
- 기본 명령어
- 이 명령어는 각 ABI별로 APK를 생성하여 앱 크기를 최적화
-
flutter build apk --split-per-abi
- 빌드 결과:
- app-arm64-v8a-release.apk
2.3. 특정 타겟 플랫폼 설정
- 디버그용 APK 생성:
flutter build apk --debug --target-platform=android-arm64
- 릴리즈용 APK 생성:
flutter build apk --release --target-platform=android-arm64
2.4. 코드 난독화 및 디버그 정보 분리
보안을 위해 난독화를 활성화하고 디버그 정보를 분리해서 빌드 가능:
flutter build apk --obfuscate --split-debug-info=./build/app/outputs/flutter-apk
2.5. 빌드 결과 위치
./build/app/outputs/flutter-apk/app-release.apk
3. Android AAB 생성 (Google Play 배포용)
3.1. AAB 빌드 명령어
flutter build appbundle --obfuscate --split-debug-info=./build/app/outputs/bundle/release
3.2. build.gradle에서 버전 정보 업데이트
- defaultConfig 섹션에 버전 정보를 입력.
defaultConfig {
applicationId "com.example.myapp" // 앱의 고유 ID
minSdkVersion 21
targetSdkVersion flutter.targetSdkVersion
// 버전 코드와 이름 업데이트
versionCode 2
versionName "1.0.1"
multiDexEnabled true // Firebase 등에서 필요할 수 있음
}
3.3. AAB 네이티브 코드 디버그 심볼 업로드 문제 해결
빌드 과정에서 발생할 수 있는 디버그 심볼 관련 경고를 해결하려면, merged_native_libs 경로의 폴더들을 ZIP으로 묶어 제출.
3.4. 빌드 결과 위치
./build/app/outputs/bundle/release/app-release.aab
4. 참고 사항
- aab만 가능: Google Play Store에 업로드하려면 AAB 형식이 필수.
- --no-sound-null-safety 옵션 제거: Dart 3.0 이상에서는 해당 옵션이 지원되지 않음.
지금까지 안드로이드 배포의 과정을 상세히 알아보았습니다.
이 과정에 앞서 해야하는 것들이 여러가지 있을 수 있습니다.
예로, License 관련한 것, 앱 아이콘, 화면 설정 관련 등 여러가지에 대해서 앞으로 여러 작성해보도록 하겠습니다.
관련해 궁금하거나 고쳐야할 부분, 추가 꿀팁은 댓글로 부탁드립니다~
참고)
2025.01.19 - [Flutter.Dart/Flutter 패키지 추천] - [Flutter 추천 패키지] Flutter OSS Licenses
300x250
'Flutter.Dart' 카테고리의 다른 글
[Flutter와 Dart] Cross Platform App 개발해보기 (0) - 소개 (0) | 2025.01.12 |
---|