본문 바로가기

Flutter/Flutter 로 Android 앱 출시

3. 앱 서명 (App Sign)

앱서명은 AAB 파일 생성과 연관되어 있습니다. AAB 파일 생성 포스트를 서로 cross check 하면서 보시길 추천합니다
이거 이해한다고 개고생 했습니다. 댓글 달아주시면 너무 감사할듯..

중요 : 2021년 8월부터 새 앱은 Google Play에 Android App Bundle을 사용하여 게시해야 합니다. 이제 200MB보다 큰 새 앱은 Play Feature Delivery 또는 Play Asset Delivery에서 지원됩니다. 2023년 6월부터 신규 및 기존 TV 앱은 App Bundle로 게시되어야 합니다.

 

앱 서명 이란?

앱 서명이랑 글자 그대로 해석하면, "앱에 서명(=행위)한다 ⇒ 앱에 사인(키스토어)을 서명(디지털 서명)한다." 라는 의미이다.

앱을 서명하는 이유?

  • 앱(APK)은 보안 암호화 키(키스토어)를 사용하여 서명 후 출시  사용자 보호 목적
  • 앱의 서명은 원래 제공자만 앱을 업데이트할 수 있도록 검증하는데 사용
  • Android 기기가 앱 업데이트를 받으면,
    업데이트 전에 앱의 디지털 서명 : 새로 설치하는 앱의 디지털 서명이 일치하는지 검증 ⇒ 동일 서명 검증

 

AAB(Android App Bundle)

중요 : 2021년 8월부터 새 앱은 Google Play에 Android App Bundle을 사용하여 게시해야 합니다.

 

개발자가 직접 APK 생성 및 서명을 하지 않고 Google Play에 맡기는 게시 방식.

 

이제 플레이스토어 업로드는 apk 방식이 아닌, 무조건 AAB(Android App Bundle) 방식으로 업로드 해야 한다. 앱의 모든 컴파일된 코드 및 리소스를 포함하는 게시 형식으로서 앱을 설치하고 실행할 때 사용되는 형식인 APK와는 다르게, 기기에 설치되거나 실행될 수 없습니다. Google Play는 AAB를 활용하여 설치시 기기에 맞게 최적화된 APK를 제공 ⇒ 앱크기 작아짐

⇒ AAB 만들고, 업로드 이 2가지만 하면 된다.

 

또한 AAB에서 중요한게 1개 더 있다.

중요 : App Bundle은 서명을 Google Play 스토어로 연기하므로 App Bundle을 업로드하기 전에 Play 앱 서명을 구성해야 합니다.

 

 

 

 

 


Play 앱 서명 방식

기존 방식

수동으로 서명(signing)을 해서 올리는 방법을 사용했습니다.

⇒ 때문에 개발자PC에서 키스토어파일(.jks)을 만들어서 직접 관리. [관련 블로그: https://luvris2.tistory.com/832 ]

⇒ 키스토어 만들고, 관리하고 이러한 귀찮은 과정을 해야함.

⇒ 간혹 이 키스토어 파일을 분실, 이럴경우 버전업된 앱을 플레이스토어에 등록할 수 없음(두려움 그자체)

 

기존 방식

 

  1. 개발자가 앱서명키(App signining key)를 스스로 만든다.
  2. 플레이스토어 등록 전, 만든 앱서명키(App signining key)를 가지고 앱에 서명 ⇒ (PC로컬 서명)
  3. 구글 플레이스토어에 등록 ⇒ 서명된 앱 그대로 사용
  4. 유저에 배포

 

 

새로운 방식 (Play 앱 서명)

플레이스토어가 직접 키를 관리 및 보관하는 방식 (분실 방지)

Play 앱 서명을 통해 Google은 앱 서명 키를 관리 및 보호하고 이를 사용하여 배포용 APK에 서명합니다. 또한 App Bundle은 APK 빌드 및 서명을 Google Play 스토어로 연기하므로 App Bundle을 업로드하기 전에 Play 앱 서명을 구성해야 합니다.

ABB 방식은 로컬에서 서명하지 않고 플레이스토어 에서 서명된다. (더이상 PC로컬 서명에서 서명할 필요 없음. 아까 AAB 설명에서 중요하다고 한 부분)

 

새로운 앱서명방식

 

새로운 방식의 Play 앱 서명은, 아래 두 가지 키를 사용합니다.

  • 앱을 서명하는데 필요한 앱 서명 키
  • 플레이스토어에 업로드를 위한 업로드 키 (NEW!)
  1. ABB 와 키스토어(jks파일){기존방식에서는 서명키로 사용되었지만 이제는 업로드 키},
    이 2가지를 플레이스토어에 업로드
  2. 플레이스토어에서 앱 서명
  3. 유저에 배포

 

 

업로드 키

업로드 키는 개발자가 보관하다가 앱을 Google Play에 업로드하기 위해 서명할 때 사용합니다.

  • 최초 업로드 시 서명할 때 사용한 키가 업로드 키가 되며, 차후 업로드에도 이 키를 사용합니다.
  • 개발자는 언제든지 업로드 키를 새로 생성하여 새로운 업로드 인증서를 등록할 수 있습니다.
  • Google은 등록되어 있는 업로드 인증서를 사용하여 서명을 검증합니다.

단순히 앱 개발자 입장에서는, 업로드 키 생성 및 서명, 관리는 기존 앱 서명 방식의 앱 서명 키에서의 방식과 동일합니다. Android Studio를 사용한다면,
기존 앱 빌드 시에 키생성과정(jks 파일생성과정)후 업로드 하는것 = 업로드 키의 과정

 

 

앱 서명 키

앱 서명 키는 Google에서 안전하게 저장하고 있으며, 배포할 APK를 서명하는 데 사용됩니다. 업로드 키를 통해 생성되며 앱 설치시 서명됩니다. 앱 서명 키는 앱의 전체 기간 동안 변경되지 않습니다. 한번 설정되면 변하지 않는다는 것임. (하지만, 변경될 수 있는 특수 상황이 있습니다.)

 

앱 서명키 생성방식은 일반적으로 2가지가 있습니다.

  1. 키스토어(jks) 생성 후 플레이스토어에 올려 업로드 키 만들면서 자동으로 서명 키를 생성하는 방법
    1. 우선 기존처럼 개발자의 PC에서 앱을 서명하기 위한 키스토어파일(.jks)을 생성합니다.
    2. 이것을 플레이스토어 콘솔에 등록하면 Upload key 로 관리가 됩니다.(플레이스토어 서명)
  2. 구글플레이 자동 앱 서명으로 생성하는 방법
    그냥 버튼 몇번 클릭으로 자동 생성 (추천)

자동 생성은 똑같다. 너무 편리하다.

 

플레이스토어 콘솔에서, '사용' 버튼을 누르면 아래화면이 나오는데...
서명키 선택

  • 다른 키 사용 → 1번 방식
  • Google에서 생성한 키 사용 → 2번 방식 (이제는 너무 편한 2번 방식)

서명이 완료 된 경우

 

 

이렇게 생성된 키들은 좌측 리스트의 '앱 서명'  부분에서 확인할수 있다.

(등록된 업로드키를 다시 내려받아 사용할 수 있다.= ⇒ der 파일형식)

 

이제는 업로드 키를 잃어버려도 다운받으면 그만이다. 비공개 업로드키를 분실했거나 비공개 키를 도용당했다면 새 키를 만들고 Google Play 지원팀에 문의하여 키를 재설정할 수 있습니다. 업로드키를 재설정해도 Google Play에서 APK를 사용자에게 제공하기 전에 다시 서명하는 데 사용하는 앱 서명 키는 영향을 받지 않습니다.

 

 

요약

2번방식을 사용하면서 앱 서명 하고, AAB 파일 만들어 업로드 하면 끝이다.

너무 간편하다. 최고!!