Flutter 앱 배포 시 Android 서명 이슈 해결
문제 상황
회사에서 Flutter로 개발한 앱을 Play Store에 처음 배포하려던 중 서명 관련 에러가 발생했다.
ERROR: JAVA_HOME is set to an invalid directory
실제로는 JAVA_HOME 문제가 아니라 keystore 설정이 잘못되어 있었다.
원인 분석
android/key.properties 파일의 경로 설정이 상대 경로로 되어 있어서 빌드 시점에 파일을 찾지 못했다. 또한 android/app/build.gradle에서 서명 설정을 제대로 불러오지 못하고 있었다.
해결 방법
먼저 android/key.properties 파일을 생성하고 절대 경로로 수정했다.
storePassword=myStorePassword
keyPassword=myKeyPassword
keyAlias=upload
storeFile=/Users/username/upload-keystore.jks
그리고 android/app/build.gradle에 서명 설정을 추가했다.
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
이후 flutter build appbundle 명령어로 정상적으로 빌드되었다.
교훈
- keystore 파일은 절대 Git에 커밋하지 말 것
key.properties도.gitignore에 추가- 팀원들과 keystore 공유는 별도 보안 채널 이용
Flutter 공식 문서를 처음부터 꼼꼼히 읽었다면 시간을 절약할 수 있었을 것 같다.