Flutter App PlayStore App 등록 / 배포하기

Updated:

Flutter App icon 추가 / 변경

flutter_launcher_icons package 를 사용해서 android 와 ios 동시에 쉽게 등록, 변경이 가능합니다

flutter_launcher_icons

// in pubspec.yaml

dependencies:
flutter_launcher_icons: ^0.9.2

flutter_icons:
  // android 환경에서 icon 등록
  android: "launcher_icon"
  // ios 환경에서 icon 등록
  ios: true
  // logo image 파일 경로 등록
  image_path: "images/icon.png"

  • package 와 설정을 마치고 terminal 로 이동해서 icon 적용을 위한 명령어 실행 합니다
flutter pub run flutter_launcher_icons:main

flutter pub icon

  • 새로고팀을 하고 android 에뮬레이터에 다음과 같이 적용된것을 확일 할 수 있습니다.

image

Flutter App 이름 변경

Android

  • 프로젝트내에 android/app/src/main/AndroidManifest.xml 을 open 합니다

  • android:label="" 안에 text 를 app 이름으로 수정합니다

iOS

  • ios/Runner/info.plist 을 open 합니다

  • CFBundleName 의 key 값을 해당 app 이름으로 변경합니다

	<key>CFBundleName</key>
	<string>안녕날씨</string>

image

구글 플레이스터어 배포용 APK 생성하기

Package 이름 변경하기

  • 프로젝트내에 android/app/build.gradle 파일을 open 합니다
defaultConfig {
    // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
    applicationId "info.jacobko.wearther_app"
}
  • applicationId 를 변경하면 되는데 보통 예) com.회사이름.앱이름 식의 형태로 작성하는데 주의 점은 패키지 이름은 한번 플레이 스터어에 올리면 수정할 수 없기 때문에 잘 선택 해야 합니다

App 버전확인

  • pubspec.yaml 에서 버전을 변경해주면 되는데 처음 app 출시라면 default 값으로 설정되어 있는 1.0.0+1 만약 1.0.0+1 출시 후 버전 없은 1.0.0+2 or 1.0.1.+2 이런식으로 원하는 버전 부분에 + 처리해주면 됩니다.
version: 1.0.0+1

앱 권한 체크

  • android/app/src/profile/AndroidManifest.xml 파일을 open 헤서 앱에서 사용할 권한이 필요한 경우를 추가합니다.

  • 기본값으로 internet 접속 권한이 있고 예시로 안녕 날씨에서는 위치권한에 대한 권한 을 manifest tag 안에 permission 값을 입력합니다

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="info.jacobko.weather_app">
    <!-- Flutter needs it to communicate with the running application
         to allow setting breakpoints, to provide hot reload, etc.
    -->
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>

앱 서명하기

  • 플레이스터어에 업로드하기 위해 개발자를 인증하기 위한 인증을 위해 keytool 을 이용해서 키 스토어 서명서를 생성합니다

  • 참고: PC 에 Java 설치 되어 있어야 합니다

  • 기존 keystore 가 있으면 만들지 않고 기존것을 사용해도 됩니다

# for mac (keystore 만들기)
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

# fo windows (keystore 만들기)
keytool -genkey -v -keystore c:/Users/USER_NAME/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
  • 암호, 이름, 조직, 지역명 을 입력 후에 최종 맞는지 물어볼때 ‘Y’ 을 입력합니다

image

  • 완료되면 /Users/유저명 경로에 key.jks 파일이 생성되면 이파일을 HDD 공간에 잘 보관 하고, 프로젝트 내에 android/app 경로에 복사합니다

앱 키 스토어 참조

  • 배포용 앱 빌드시 참조하기 위해 android/app 경로에 key.properties 파일 생성 후 아래의 내용을 입력 시킵니다

  • github 나 public 경로에 key.properties 노출되지 않도록 주의 합니다 (.gitignore 확인)

storePassword=<키생성시 입력한 암호>
keyPassword=<키생성시 입력한 암호>
keyAlias=key
storeFile=./key.jks

Gradle 서명 구성

  • 앱의 서명을 구성하기 위해 android/app/build.gradle 파일을 수정합니다

  • Gradle 빌드시 key.properties 파일을 참조하기 위해 Gradle 에서 android 블록 산단에 아래 내용을 추가합니다

// 플러그인 위, android 위에 keystoreProperties 를 추가 합니다
// 'app/key.properties' 실제 properties 경로 위치 확인!!

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('app/key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
  • 이후 android 위에 Gradle 에서 buildType 블록 상단에 singingConfigs 블록을 추가합니다

android {
  ....

    buildTypes {
      release {
          // TODO: Add your own signing config for the release build.
          // Signing with the debug keys for now, so `flutter run --release` works.
          signingConfig signingConfigs.debug
      }
  }
}

// 위의 default 로 되어 있는 code 를 다음과 같이 변경합니다

android {
  ....
     signingConfigs {
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile file(keystoreProperties['storeFile'])
           storePassword keystoreProperties['storePassword']
       }
   }
   buildTypes {
       release {
           signingConfig signingConfigs.release
       }
   }
}
  • 이제 앱의 release 빌드에서 자동으로 서명이 될 것 입니다.

프로가드 활성화

  • 앱의 난독화를 위해 프로가드를 활성해야 합니다. APK 파일 크기를 줄이고,코드를 디컴파일 시 소스 코드를 알 수 없도록 난독화를 진행 합니다

  • /android/app/proguard-rules.pro 파일을 생성하고 다음과 같은 규칙을 추가 합니다

## Flutter wrapper
-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.**

  • Gradle 빌드 시 프로가드 파일 참조가 가능하도록 /android/app/build.gradle 파일에서 buildTypes 블록 내에 다음 내용을 추가 해서 프로가드를 사용한다고 선언합니다.
android {

    ...

    buildTypes {

        release {

            signingConfig signingConfigs.release

            minifyEnabled true
            useProguard true

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        }
    }
}

App Manifest 검토하기

  • 올바른 앱 설정을 위해서 /android/app/src/main 에 있는 AndroidManifest.xml 에 값을 check 합니다

    • application: 앱의 최종 이름을 반영하기 위해 android:label 이 잘 적용됬는지 확인하기

    • uses-permission: 앱의 사용권한이 필요한 permission 부분이 잘 적용됬는지 확인하기

빌드 구성 검토하기

  • 올바른 빌드 구성을 위해 /android/app.build.gradle 의 값을 check 합니다

    • applicationId: 고유의 ID 값이 잘 적용 되었는지 확인하기

    • versionCode & versionName : 내부 앱 버전 번호를 지정하고, 문자열 형태로 명시하세요. pubspec.yaml 파일에 version 속성을 설정하여 내부 앱 버전 번호를 문자열 형태로 지정할 수 있습니다.

    • minSdkVersion & targetSdkVersion: 최소 API 레벨과 개발 대상 버전으로 지정한 지정 API 레벨을 명시하기

앱 번들 또는 APK 만들기

  • 플레이스토어 개시할때 릴리즈 방식이 2가지 있는데 앱 번들, APK 생성 방식이 있습니다. 구글 가이드에서는 앱 던들 생성을 추천하고 있습니다. (앱 번들 생성 : 번들 도구와 구글플레이스토어 통해 test 가 가능하지만, arm, x68 코드가 모두 컴파일 되서 APK 파일이 무거워 짐)

앱번들 생성 명령어

flutter build appbundle

image

  • /build/app/outputs/bundle/release/app.aab 경로에 aab 파일이 생성됩니다

APK 만들기

flutter build apk --split-per-abi

image

  • build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk 경로에 apk 파일이 생성됩니다

빌드 된 APP 실제 스마트폰에서 APK 설치 및 구동 테스트

  • android device 를 연결한 후에 flutter install 명령어를 입력해서 store 업로드 전에 App 구동 test 를 진행 합니다

개발자 계정 가입 및 등록

  • 구글 플레이스터어에 개발자 개발자 계정 가입 및 $25 결제가 필요합니다

Google Play 개발자 계정 등록

  • 개발자 개정을 만들고 google console 에 로그인 하면 다음과 같은 화면이 나옵니다

image

  • 앱만들 버튼 클릭 후 앱 세부 정보에서 적절하게 앱 정보를 입력합니다.

  • 간단한 App 일 경우, 세부정보 입력 후에 (내부테스트, 비공개 테스트 등 skip 하고 바로 출시 진행) 국가 및 지역 선택 후에 프로덕션 버전 만들기로 진행합니다

image

  • App Bundle build 한 .aab 파일 을 업로드 하고 앱출시 심사를 대기하면 됩니다.

image


🔶 🔷 📌 🔑

Reference

Build and release an Android app - https://flutter.dev/docs/deployment/android

Android 앱 출시 준비하기 - https://flutter-ko.dev/docs/deployment/android

슬기로운 IT생활 - https://itwise.tistory.com/47?category=964549

Categories:

Updated:

Leave a comment