Flutter로 개발한 앱 플레이스토어(Play Store)에 배포하기 (2) - 앱 서명하기

Flutter로 개발한 앱 플레이스토어(Play Store)에 배포하기 시리즈


 

Google Play 스토어에 출시하기 위해서는 반드시 앱에 디지털 서명을 해야 합니다.

만약 디지털 서명을 하지 않을 시 Google Play 스토어에 배포를 할 수 없으므로 해당 포스팅을 참고하여

앱에 디지털 서명을 하시길 바랍니다.

 


keystore 만들기

 

그런 다음 아래 명령어를 입력합니다.

(참고로, 경로 부분에 USER_NAME을 컴퓨터 이름으로 변경한 후 실행시킵니다.)

 

# MAC / LINUX
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

# Windows
keytool -genkey -v -keystore c:/Users/USER_NAME/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

 

그럼 아래와 같이 전자 서명에 들어갈 항목을 입력하는 부분이 나오게 됩니다.

해당 질문에 각각 맞게 입력을 해줍니다.

 

 

각 질문의 대한 내용은 아래와 같습니다.

 

  • Q > What is your first and last name? 당신의 첫번째와 마지막 이름은 무엇인가요?

  • A > Hong GilDong

  • Q > What is the name of your organizational unit? 당신의 부서의 이름은 무엇인가요?

  • A > NooGooNaa

  • Q > What is the name of your organization? 당신의 조직 이름은 무엇인가요?

  • A > NooGooNaa

  • Q > What is the name of your City or Locality? 당신의 도시 이름은 무엇인가요?

  • A > Gyeyang-gu

  • Q > What is the name of your State or Province? 당신의 지역 이름은 무엇인가요?

  • A > Incheon-si

  • Q > What is the two-letter country code for this unit? 당신의 국가 코드를 입력해 주세요

  • A > 82

그럼 key.jks라는 파일이 C:\Users\USER_NAME 디렉토리에 존재하는 것을 확인할 수 있습니다.

 

 

이렇게 Keystore를 만들게 되었습니다.

 

- 삽질 1

처음 Keytool을 사용하려고 하니 아래와 같은 오류가 발생하였습니다.

 

keytool : 'keytool' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시 도하십시오. 
위치 줄:1 문자:1 
+ keytool -genkey -v -keystore c:/Users/bhj28/key.jks -keyalg RSA -keys ... 
+ ~~~~~~~ 
           + CategoryInfo : ObjectNotFound: (keytool:String) [], CommandNotFoundException 
           + FullyQualifiedErrorId : CommandNotFoundException

 

 

해당 오류는 JDK가 설치가 안되어 있어서 발생하는 오류로 JDK를 설치해 주면 해당오류가 해결 됩니다.

아래 링크를 참고하여 JDK를 설치해 줍니다.

 

 

OpenJDK 14.0.1 설치하는 법

자 오라클의 JDK가 유료가 되면서 많은 사람들이 OpenJDK를 사용하고 있습니다. OpenJDK는 무료이기 때문에 사람들이 많이 사용하는 것 인데요. 여기 들어온 여러분들은 설치법이 궁금해서 온것을 알

noogoonaa.tistory.com

 

그러면 아래 사진과 같이 정상적으로 실행이 되는것을 확인할 수 있습니다.

 


 

앱에서 Keystore를 참조할 수 있도록 설정하기

앱을 빌드할 때 앱이 Keystore를 참조해야하므로 우리는 안드로이드에 특정 명령어를 입력해야 합니다.

먼저 배포할 앱 프로젝트 폴더에 접근한 후 [android] 폴더에 [key.properties] 이라는 파일을 생성해 줍니다.

 

 

그 후 아래에 내용을 [key.properties]에 입력해 줍니다.

 

storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=C:\\Users\\User_Name\\key.jks

 

 

 key.properties 파일은 개인적으로 보관하고 있어야 합니다.

공개된 저장소에 업로드 하면 안됩니다.

 


Gradle에서 서명 구성하기

Android에 Gradle에서도 해당 key.properties 파일에 접근할 수 있도록 설정해 줍니다.

[android] - [app] - [build.gradle] 로 들어가,

 

먼저 속성파일에서 keystore를 가져올 수 있도록 아래 코드를 입력해 주시길 바랍니다.

(주석을 읽으면서 입력하세요)

// build.gradle에서 해당 코드를 검색합니다.
android {
// 해당 코드를 추가해 줍니다.
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

// 검색 된 코드
android {

 

그리고 아래 코드 또한 입력해 주시가 바랍니다.

// build.gradle에서 해당 코드를 검색해 줍니다.
buildTypes {
// 해당 코드를 입력해주세요
signingConfigs {
    release {
        keyAlias keystoreProperties['keyAlias']
        keyPassword keystoreProperties['keyPassword']
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['storePassword']
    }
}

// 검색된 코드
buildTypes {

 

이제 앱을 빌드할 때 자동으로 key 파일을 불러올 수 있습니다.


 

마무리

자 이번 포스팅에서는 앱에 디지털 서명을 하는 방법에 대해서 알아보았습니다.

혹시 잘 안되는 부분이 있거나 포스트에 문제가 있다면 댓글을 남겨주시기 바랍니다.

감사합니다.

 

이 글을 공유하기

댓글