Flutter 안드로이드 앱 release 버전 빌드
1. 앱 이름 변경하기
android/app/src/main/AndroidManifest.xml 파일 내에서 `andorid:label`의 값을 원하는 이름으로 변경해줍니다.
2. 간단히 아이콘 적용하기
1024px 크기의 아이콘을 만든 후에 아래 과정을 적용하면 됩니다. 배포 시에 필요한 가장 큰 이미지가 1024px이기 때문에 지금 1024px 크기의 이미지를 만들어 두고, 추후에 작은 크기의 이미지가 필요할 때 resize 하시면 됩니다.
Flutter 공식 홈페이지에 설명된 아이콘 추가 설명은 조금 복잡하고 손이 많이 가는 것 같습니다.
안드로이드 스튜디오를 이용하면 GUI 환경에서 쉽게 아이콘을 적용할 수 있습니다.
우선 android 디렉토리를 안드로이드 스튜디오에서 열어줍니다.
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(Android App Bundle) 선택 후 Next 버튼을 눌러줍니다.
keystore를 새로 만들 경우에는 `Create new` 버튼을 누르고, 기존의 keystore를 선택할 경우에는 `Choose existing` 버튼을 눌러줍니다.
keystore 관련 정보 및 비밀번호를 입력해줍니다. `Key store path`는 설정 후 기억해야 합니다.
아래와 같은 에러가 나올 수 있는데, 앱 배포에 사용할 수 있는 keystore는 정상적으로 생성이 된 것입니다.
비밀번호 저장 체크박스에 체크한 후에 Next 버튼을 눌러줍니다.
`release` 버전 선택 후 Finish 버튼을 눌러줍니다.
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