모바일 앱 개발

Flutter 안드로이드 앱 release 버전 빌드

투자유v 2021. 1. 10. 02:43
728x90

1. 앱 이름 변경하기

android/app/src/main/AndroidManifest.xml 파일 내에서 `andorid:label`의 값을 원하는 이름으로 변경해줍니다.

안드로이드 앱 이름 변경

2. 간단히 아이콘 적용하기

1024px 크기의 아이콘을 만든 후에 아래 과정을 적용하면 됩니다. 배포 시에 필요한 가장 큰 이미지가 1024px이기 때문에 지금 1024px 크기의 이미지를 만들어 두고, 추후에 작은 크기의 이미지가 필요할 때 resize 하시면 됩니다.

Flutter 공식 홈페이지에 설명된 아이콘 추가 설명은 조금 복잡하고 손이 많이 가는 것 같습니다.

공식 홈페이지에서 설명하는 아이콘 추가 방법

안드로이드 스튜디오를 이용하면 GUI 환경에서 쉽게 아이콘을 적용할 수 있습니다.

우선 android 디렉토리를 안드로이드 스튜디오에서 열어줍니다.

안드로이드 스튜디오에서 android 디렉토리 열기

Image Asset 버튼을 클릭합니다.

안드로이드 스튜디오 Image Asset 버튼 클릭

아이콘 이미지를 선택합니다.

아이콘 이미지 선택하기

Next 버튼을 누르고

3. keystore 만들고 aab(Android App Bundle) 파일 빌드

쉘 커맨드로 keystore 만들기 위해서 아래 명령어를 입력합니다.

맥/리눅스일 경우

keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key0

윈도우일 경우

keytool -genkey -v -keystore c:/Users/USER_NAME/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key0

쉘 커맨드로 keystore 만들기가 어려운 경우에는 아래와 같이 안드로이드 스튜디오에서 GUI로 만들 수도 있습니다.

안드로이드 스튜디오에서 aab 파일 파일 빌드 준비

aab(Android App Bundle) 선택 후 Next 버튼을 눌러줍니다.

aab 선택 후 Next 버튼 클릭

keystore를 새로 만들 경우에는 `Create new` 버튼을 누르고, 기존의 keystore를 선택할 경우에는 `Choose existing` 버튼을 눌러줍니다.

새로운 keystore 생성

keystore 관련 정보 및 비밀번호를 입력해줍니다. `Key store path`는 설정 후 기억해야 합니다.

keystore 정보 입력

아래와 같은 에러가 나올 수 있는데, 앱 배포에 사용할 수 있는 keystore는 정상적으로 생성이 된 것입니다.

keystore 생성 시 발생할 수 있는 에러

비밀번호 저장 체크박스에 체크한 후에 Next 버튼을 눌러줍니다.

keystore 비밀번호 저장

`release` 버전 선택 후 Finish 버튼을 눌러줍니다.

release 버전 선택

4. 간단히 aab(Android App Bundle) 파일 만들기

앞으로 지속적으로 앱을 업데이트하고 배포하기 위해 빌드 과정을 거칠 것입니다. 이 때마다 안드로이드 스튜디오에서 GUI를 이용하면 시간이 많이 소요됩니다. 한 번 설정을 해두면 커맨드 하나로 aab 파일을 만드는 방법이 있습니다.

4.1. keystore 참조 파일 만들기

/android/key.properties 파일을 생성합니다. keystore 생성 시 입력했던 비밀번호와 alias를 입력하고 저장한 keystore 파일 경로를 입력해줍니다.

storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=<key store 파일 위치, 예) /Users/<user name>/key.jks>

4.2. 앱 서명 구성하기

/android/app/build.gradle 파일을 아래와 같이 수정합니다.

   android {

위 부분을 아래와 같이 변경합니다.

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

   android {

그리고,

   buildTypes {
       release {
           // TODO: release 빌드 버전을 위한 서명 구성을 추가하세요.
           // 현재는 `flutter run --release`가 디버그용 키로 서명되어 동작합니다.
           signingConfig signingConfigs.debug
       }
   }

위 부분을 아래와 같이 변경합니다.

   signingConfigs {
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile file(keystoreProperties['storeFile'])
           storePassword keystoreProperties['storePassword']
       }
   }
   buildTypes {
       release {
           signingConfig signingConfigs.release
       }
   }

여기까지 설정하면, key.properties 파일로부터 keystore 정보를 가져올 수 있게됩니다. 앞으로 앱 업데이트 후에 aab 파일을 만들 때에는 아래와 같은 커맨드를 입력하기만 하면 됩니다.

$ cd <app dir>
$ flutter build appbundle

aab 파일 build