본문 바로가기

[Flutter] PlayStore에 내부 배포하기

카테고리 없음 by 코나인 2023. 3. 10.
반응형

keystore 생성 : keytool을 이용하여 운영체제에 맞게 생성합니다.

# keystore for mac/linux
keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload

# keystore for windows
keytool -genkey -v -keystore %userprofile%\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload

생성된 keystore를 참조하여 앱을 빌드하기 위해 key.properties(경로 : [project]/android/key.properties) 파일을 생성합니다. storeFile 항목에 위에서 생성한 keystore의 경로를 지정합니다.

 

key.properties(경로 : [project]/android/key.properties) 파일 생성 : 빌드시 keystore를 참조하기 위한 설정 파일, storeFile 값에 위에서 생성한 keystore를 지정

storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=upload
storeFile=<location of the key store file, such as /Users/<user name>/upload-keystore.jks>

 

signing 설정(build.gradle 파일)

[project]/android/app/build.gradle 파일에서 "android {"를 찾고 직전에 아래 내용을 추가합니다.(아래 소스에서 def keystoreProperties 부터 android { 직전까지)

// 여기부터
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
   keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
// 여기까지

android {
  ...
}

 

다음으로 android.buildTypes 직전에 signingConfigs 설정값을 추가합니다.(signingConfigs부터 중괄호까지)

android {
  ....
  
  // 여기부터
  signingConfigs {
    release {
      keyAlias keystoreProperties['keyAlias']
      keyPassword keystoreProperties['keyPassword']
      storeFile file(keystoreProperties['storeFile'])
      storePassword keystoreProperties['storePassword']
    }
  }
  // 여기까지
  
  buildTypes {
    release {
      // 아래 항목도 ".debug"에서 ".release"로 변경
      signingConfig signingConfigs.release
    }
  }
}



릴리즈 앱번들 생성

빌드 output은 “[project]/build/app/outputs/bundle/release/app.aab"에 존재

flutter build appbundle

 

 

APK 만들기

필요시 아래의 명령어로 릴리스용 APK를 생성합니다.

flutter build apk --split-per-abi

Running Gradle task 'assembleRelease'...                           14.7s
✓  Built build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk (8.7MB).
✓  Built build/app/outputs/flutter-apk/app-arm64-v8a-release.apk (9.1MB).
✓  Built build/app/outputs/flutter-apk/app-x86_64-release.apk (9.2MB).

 

Device에서 APK 설치 및 테스트

device에 release용으로 바이너리를 설치합니다.

flutter build apk;
flutter install;

 

Google SignIn 불가 원인1(릴리즈용 SHA-1)

firebase > 설정 > 일반 > 내 앱 > Android에 등록된 SHA-1이 없는 경우. SHA-1을 생성하여 "디지털 지문" 추가. 다음으로 "google-services.json" 파일을 다운받아 내용을 갱신합니다.

keytool -v -list -keystore ~/upload-keystore.jks -alias upload



Google SignIn 불가 원인2(Play App 서명)
불가원인1과 마찮가지로 firebase > 설정 > 일반 > 내 앱 > Android에 SHA-1 키를 등록 &  "google-services.json"을 갱신합니다.

 

https://docs.flutter.dev/deployment/android#create-an-upload-keystore

 

Play Console로 이동 > 계정 선택

https://play.google.com/console

 

내부 배포할 앱 선택

 

새 버전 추가

 

 

App Bundle 업로드

 

 

업로드 실패

실패 원인은 이전 배포와 동일한 버전 코드를 사용했기 때문입니다.

 

버전 코드의 위치

pubspec.yaml 파일에서 version 필드를 찾습니다. "+" 다음에 있는 숫자가 버전코드입니다. 1 올려줍니다.

 

다시 빌드 실행

 

 

재등록 후 다음 클릭

 

오류 및 경고 확인 후 배포 시작

 

내부 배포 여부 마지막 확인

반응형

댓글