coding etude
[flutter android] Could not get unknown property 'release' for SigningConfig container of type org.gradle.api.internal.FactoryNamedDomainObjectContainer. 본문
[flutter android] Could not get unknown property 'release' for SigningConfig container of type org.gradle.api.internal.FactoryNamedDomainObjectContainer.
코코리니 2024. 1. 12. 00:04
play store console 에 최초 빌드한 파일을 업로드 하려고 하면 debug 모드의 앱은 등록 할 수 없다는 오류가 나온다.
최소로 만든 앱에는 대부분의 설정값이 기본적으로 debug 모드로 설정이 되어 있기 때문에 꼭 확인해 주어야 하는 부분인것 같다.
project/android/app/build.gradle
build.gradle 를 확인하다 보면 bulidTypes 의 debug에 release 가 되어 있는것을 확인 할 수 있다.
그래서, debug 아래쪽에 release를 만들어 준 후 SigningConfig 의 값을 설정하면... 짜잔!!!
당연하게도 release 의 값을 찾을 수 없다는 not found 오류가 뜬다.. 404 도 아니고...
아무튼... 이제부터 다음 순서에 맞게 SigningConfig의 값을 세팅해 주어야 한다.
1. keystore 파일을 생성해 주어야 한다.
keystore는 앱 개발자에 대한 정보가 포함되어 있는 암호화된 파일이라고 한다.
Google Play에 Android앱을 배포할 때 KeyStore로 서명한 APK 또는 Bundle 파일이 필요하며, 업데이트 버전을 배포 시 기존과 동일한 KeyStore로 서명한 APK 또는 Bundle 파일만 배포가 가능하다.
이는 APK 또는 Bundle 파일을 생성할 때 KeyStore로 서명하므로써 어떤 개발자가 생성한 앱인지 인증하는 것이고, 동일한 개발자가 생성한 앱만 배포가능하게 하므로써 다른 개발자가 의도치 못한 앱 배포를 하지 못하게 방지해 준다.
keystore는 android studio를 통해서 만들거나 터미널을 통해 만들 수도 있다. 편한 방법을 사용해보자!
(keystore 에 대해서는 추후에 자세히 포스팅 하도록 하겠다.)
2. key.properties 값을 세팅 해주아야 한다.
만들어진 keystore.jsk 파일을 ./android/app 폴더 안에 넣어주고 ./android 폴더에 key.properties 파일을 만들어야한다.
storePassword=설정한비밀번호
keyPassword=다시한번비밀번호
keyAlias=별칭
storeFile=파일명(ex. keystore.jsk)
위의 값을 입력해 주고 저장.
3. app/build.gradle 파을을 다시 수정해 주어야 한다.
이제 처음으로 돌아가서 오류가 난 부분을 수정해 주면 된다. SigningConfig 의 값을 설정해 주고 ,
buildTypes의 release 에 값을 입력해 주면 된다.
(그냥 복붙은 안되요 아래 사진처럼 복붙 하세요)
signingConfigs {
release { keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
signingConfig signingConfigs.release
이하 내용은 다음 포스팅에 proGuard 를 설명 할 때 포스팅...
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
끝.