728x90
반응형
구글 플레이스토어 Flutter(플러터) 배포 #2
플레이 콘솔 새 버전만들기,
앱 서명하기,
내부 테스트 트랙으로 출시하기
내부 테스트 버전 만들기
- 내부 테스트 버전을 만들기 위해 우측 상단의 새버전 만들기 선택한다.
- 내부 테스트 버전 만들기 페이지가 나오고 App Bundle(aab) 파일을 업로드 한다.
- 만약 하단에 출시모드로 서명해야 된다고 뜨면 https://flutter-ko.dev/docs/deployment/android 플루터 Android 앱 출시하기 페이지의 앱 서명하기부터 따라한다.
앱 출시모드로 서명하기
- 플루터 Android 앱 출시하기 페이지로 이동 후 앱 서명하기 부터 따라한다.
#맥/리눅스에서 keystore 만들기
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
#윈도우에서 keystore 만들기
keytool -genkey -v -keystore c:/Users/USER_NAME/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
- 안드로이드 스튜디오 내부 jre의 keytool를 사용해도 된다.
"/Applications/Android Studio.app/Contents/jre/Contents/Home/bin/keytool" -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
- 정보 등록을 다 하면 keystore 생성이 완료된다.
- keystore가 생성된 경로는 복사해 놓든지 해서 기억해둔다.
- key.properties 파일을 프로젝트/android/ 폴더 아래 생성하고, storeFile 항목에 keystore 위치를 적는다.
storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=<key store 파일 위치, 예) /Users/<user name>/key.jks>
- 이제 마지막으로 앱 release 빌드할때 자동으로 서명하기 위해 build.gradle파일을 수정한다.
#before
android {
#---------------------------------------------------------------------------
#after
#여기서
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
#여기까지 추가
android {
#before
buildTypes {
release {
// TODO: release 빌드 버전을 위한 서명 구성을 추가하세요.
// 현재는 `flutter run --release`가 디버그용 키로 서명되어 동작합니다.
signingConfig signingConfigs.debug
}
}
#-----------------------------------------------------------------------------------
#after
#여기서부터
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
#여기까지 추가한다.
buildTypes {
release {
signingConfig signingConfigs.release #debug를 release로 바꿔준다.
}
}
플루터 App bundle (aab) 출시모드(release)로 빌드
- 만약 app-release.aab 으로 빌드되는 파일명을 바꾸고 싶다면 build.gradle 파일을 열고 defaultConfig 항목에 다음을 추가하면 applicationid-version 으로 파일명이 생성된다.
defaultConfig {
…
setProperty("archivesBaseName", "$applicationId-v$versionName")
}
- 서명 구성이 끝났으니 앱을 출시모드(repease)로 빌드를 한다.
- --dart-define는 빌드 시 추가적인 값을 플루터로 넘길때 사용한다.
flutter build appbundle --dart-define=SERVICE_URL=https://www.yourusername.tistory.com/ --release --obfuscate --split-debug-info build/app/outputs/symbols
- 빌드가 정상적으로 완료되면 build/app/outputs/bundle/release폴더 아래 aab파일이 생성된다.
App bundle 업로드
- 구글 플레이 콘솔로 돌아와서 출시모드(release) 빌드된 파일을 다시 업로드한다.
- 만약 버전이 동일하다고 뜬다면 앱 버전을 올리고 빌드한다음에 다시 업로드를 한다.
- 앱 버전은 pubspec.yaml파일을 열고 version을 수정하면된다.
- 안드로이드는.. +뒤에 붙은 숫자를 수정해야 버전이 올라간다. (메이저, 마이너버전을 올려도 "버전코드는 이미 사용되었습니다." 라는 메시지가 계속 뜨던데, +뒤에 붙은 숫자를 올리니까 업로드됨.. 이부분은 제가 잘 몰라서 그럴수도 있음.)
- 다시 구글 플레이 콘솔로 돌아와서 올라간 버전을 App Bundle에 업로드 한다.
- 업로드가 완료되었으면, 저장을 누르고, 버전검토 버튼을 눌러준다.
내부 테스트 트랙으로 앱 출시
- 오류, 경고 및 메시지는 일단 무시하고 내부 테스트 트랙으로 출시 시작 버튼을 눌러준다.
- 출시 버튼을 클릭!
- 내부 테스트 트랙으로 출시가 완료되었다.
- 이제 등록된 테스터들이 테스트 할 수 있도록 참여 링크 복사한다.
- 링크 복사를 누르면 "웹 링크 복사됨" 이라는 메시지가 뜨면서 클립보드로 링크가 복사된다.
- 복사된 링크를 등록된 테스터에게 제공하면, 테스터는 해당 링크로 앱을 설치하여 테스트해볼 수 있다.
728x90
반응형