[flutter] day19: 앱 출시하기(android)

KoEunseo·2023년 10월 19일
0

flutter

목록 보기
29/45

플러터 공식사이트

APK파일

apk파일로 휴대폰에 앱 설치

$ flutter build apk

빌드 끝난 후 build 폴더 -> app-release.apk파일 폰에 옮겨서 설치 진행.

Playstore배포

Google Play Console에서 앱을 올려서 배포

업로드 방식1: APK

flutter build apk
앱 설치파일.
거의 모든 안드로이드 앱에 호환될 수 있도록 함.
용량이 매우 크다.
보통 개발자의 서명이 들어간다.

업로드 방식2: ABB(AppBundle)

flutter build appbundle
apk 빌드 킷
사용자의 디바이스에만 맞는 호환성 제공
용량이 더 작다. 따라서 이 방식을 더 많이함.

앱 서명

1. 키스토어 파일 만들기

홈 디렉터리에 upload-keystore.jks를 만든다.

  • -keystore 다음에 오는 경로가 홈 디렉터리임.
  • 이 명령어를 치고 패스워드를 입력한다. 이 패스워드를 꼭 기억할것.
    keytool은 자바를 통해 사용 가능한 명령어임.(자바가 설치되어있어야함)
// 맥/리눅스 환경
  keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA \
          -keysize 2048 -validity 10000 -alias upload

// 윈도우 환경
  keytool -genkey -v -keystore %userprofile%\upload-keystore.jks ^
          -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 ^
          -alias upload

2. 앱 서명정보 파일 만들기

[project]/andriod/key.properties 경로에 key.properties를 만든다.
storeFile에 keystore파일의 절대경로를 넣는다.
keyAlias는 별칭. 이 경우 위에 upload라는 이름으로 설정되어있기 때문에 upload로 쓰면 된다.
storePassword, keyPassword는 앞에서 친 패스워드를 사용한다.

storePassword=<password-from-previous-step>
keyPassword=<password-from-previous-step>
keyAlias=upload
storeFile=<keystore-file-location>

3. 빌드시 앱 서명하게 만들기

[project]/android/app/bundle.gradle을 수정한다.

android {...} 내용이 나오기 직전에 5줄 추가

   def keystoreProperties = new Properties()
   def keystorePropertiesFile = rootProject.file('key.properties')
   if (keystorePropertiesFile.exists()) {
       keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
   }

   android {
         ...
   }

다음 내용도 수정한다.

  • 기존 코드
    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
  • 수정 코드: 이 코드로 대체한다.
   signingConfigs {
       release {
           keyAlias keystoreProperties['keyAlias']
           keyPassword keystoreProperties['keyPassword']
           storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
           storePassword keystoreProperties['storePassword']
       }
   }
   buildTypes {
       release {
           signingConfig signingConfigs.release
       }
   }

flutter clean 후 재시작

  • 캐시된 빌드파일을 사용하지 않기 위해 gradle 파일을 수정한 후에는 반드시 flutter clean을 해준다.

앱 권한 및 팁

  1. 내가 사용하는 패키지가 필요한 권한이 뭐가 있는지 반드시 확인
  2. 내가 사용하는 패키지가 최소 sdk 버전이 있는지 확인(minSdkVersion)
profile
주니어 플러터 개발자의 고군분투기

0개의 댓글