IT_Programming/Android_Java

[펌] Android App Bundle로 aab 첫 등록 방법

JJun ™ 2019. 5. 27. 12:57



 * 출처

 : https://munkijung1992.postype.com/post/3862510



직접 구글플레이 콘솔에 수차례 등록하고 해제하며 노가다 한 경험으로 작성하였습니다.

공식적은 구글 관련 글과 블로그를 따로 참조하도록 하겠습니다

저 처럼 고통받지 마시고 원할하게 앱을 등록하시면 좋겠습니다.

이 글은 2019년도 6월에 작성하였습니다. 작업 방법이 변경될 수 있으니 다른 글과 참고하여 확인해주세요.


AAB 등록 작업 순서

  1. 구글 플레이 콘솔에서 서명 키를 구글에서 관리하도록 설정 권장을 선택시에 고급 옵션을 설정합니다.
  2. 여기서 [Java Keystore에서 키와 인증서를 내보내고 업로드합니다.] 를 선택합니다.
  3. 선택하고 나면 화면에서 첫번째 작업인 PEPK 도구를 다운 받을 수 있습니다. 다운을 받아주세요.
  4. 다음에는 구글 플레이에 등록할 APK의 인증서를 생성합니다. (JKS파일)
  5. PEPK 도구와 JKS이 준비가 되었다면 두번째 작업인 명령프롬프트 작업을 진행합니다. 여기서 구글플레이 콘솔에서 원하는 ZIP파일 생성됩니다. 이것을 구글 플레이 콘솔에 업로드합니다.
  6. 다음에는 안드로이드 스튜디오에서 JKS파일을 하나 더 생성합니다. 이 서명키는 추후에 어플리케이션을 계속해서 업데이트 해나가는 과정에 무조건 사용됩니다. 첫번째 JKS로 서명한 aab파일은 구글 플레이 콘솔에 등록하실 수 없습니다. 즉, 2번째 JKS파일은 꼭 중요하게 보관하셔야합니다.
  7. 세번째 작업인 PEM 파일을 2차 JKS파일과 함께 명령 프롬프트로 생성하여 구글 플레이 콘솔에 업로드합니다.
  8. (추가) 해시키도 기존에 알던 방식이 아니라 새로 서명하였기에 구해줘야 합니다. 1차 JKS파일을 이용하여 명령 프롬프트를 사용하여 해시키를 구할 수 있습니다.



0. 자바의 경로와 Open SSL 경로가 필요합니다.
  • 최근에는 자바 설치 없이 내장되어 있지만 이 작업은 자바와 openSSL이 필요합니다.
  • 자바는 ouput.zip파일과 pem파일 생성에 사용됩니다.
  • OpenSSL은 새로운 해키시값을 추출하는데 사용합니다.
  • [글쓴이 자바 경로] -> C:\Program Files\Java\jdk-12.0.1\bin
  • [글쓴이 open ssl 경로] -> C:\Program Files\OpenSSL-Win64\bin


1. 구글에서 앱 서명키를 관리하도록 설정 - 고급옵션을 선택합니다.

구글에서 서명키를 관리하도록 권한을 설정합니다.여기서 고급 옵션을 선택합니다.


2. [Java Keystore에서 키와 인증서를 내보내고 업로드합니다.] 를 선택합니다.
3. 화면에서 보여지는 PEPK 도구를 다운받아주세요.
  • PEPK 도구와 나머지 JKS파일을 같은 경로도 두시면 편합니다. 이후 작업에 경로가 사용됩니다.


4. 안드로이드 스튜디오에서 JKS파일을 생성해주세요.
  • alias값을 기억해주세요. 모든 전체작업에 저는 alias값과 패스워드는 동일하게 적용했습니다.


5. 명령프롬포트 작업을 시작하겠습니다.
  • [2번 스크린샷 참조] 구글 플레이 콘솔 설명

$ java -jar pepk.jar --keystore=foo.keystore --alias=foo --output=output.zip --encryptionkey=eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a --include-cert

  • foo.keystore -> JKS의 경로입니다.
  • foo -> JKS의 alias값입니다. 
  • output.zip -> 우리가 이런 프롬포트를 통해서 얻어오는 결과물입니다. 생성되는 곳의 경로와 이름을 설정하세요.
  • 이 결과물이 생성되면 구글 플레이 콘솔에 파일을 업로드해주세요.

(글쓴이) 5번 작업물 - 저는 메모장에다가 적어가면서 정리해놨습니다. 참고하시면 편할거에요.

java -jar C:\Users\munki\Desktop\pepk.jar --keystore=‪‪C:\Users\munki\Desktop\skill_developer.jks --alias=skill_developer --output=‪C:\Users\munki\Downloads\skill_levelup\private_key\private_key.zip --encryptionkey=‪eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a --include-cert


6. 안드로이드 스튜디오에서 2번째 JKS 파일을 생성합니다.
  • 이번에 생성하는 2번째 JKS파일로 구글 플레이에 등록하는 앱을 추출할 것입니다.
  • 나머지는 정확치는 않지만 alias값은 틀리면 안됩니다.
  • 저는 alias와 비밀번호는 같게 해두었습니다. 
  • 이후 aab파일을 뽑을때는 1번 JKS파일이 아닌 2번 JKS파일로 생성합니다.


7. 구글 플레이 콘솔에 등록할 PEM파일을 생성합니다.

(선택사항) 보안 강화를 위해 새 업로드 키 만들기(권장) 를 선택하면 정보가 보입니다.

  • 여기서도 명령프롬포트 작업을 진행합니다. 안드로이드에서 2차 JKS로 pem파일을 생성합니다.
  • 방법 자체는 위와 동일합니다. 파일이 생성되면 pem파일을 업로드합니다.


8. (추가) 해시키를 사용하는 경우 1번 JKS파일을 이용하여 추출합니다.
  • 이 부분 저는 이해가 안되는데 경험으로 작성하겠습니다.
  • 카카오와 네이버 페이스북등에 해시키가 사용되어 기존에는 안드로이드 스튜디오에서 해시키값을 구해서 디버그 모드와 릴리즈 모드의 해시키 2개를 적용하였습니다. 그런데 aab -> apk를 등록하게 되면 해시키 등록 오류가 나오더군요. 새로운 인증서를 통해서 앱을 추출하였기 때문에 해시키를 새로 추출해야하는 것으로 저는 인지했습니다. 그래서 당연히 2번 JKS파일로 해야 된다고 생각했는데 1번 JKS로 해시키를 추출해야하더군요. 노가다 경험이지만 페이스북에는 해시키 오류로 해시키가 직접 적혀서 나오더군요. 이를 통해 1번 JKS와 2번 JKS를 모두 이용해서 추출해본 결과 1번 JKS가 페이스북에 맞는 해시키가 나왔습니다. 이후에 카카오와 네이버에 등록해보니 정상적으로 작동하더군요.


- Open SSL을 이용하여 해시키를 추출 

keytool -exportcert -alias skill_developer -keystore C:\Users\munki\Desktop\2번JKS.jks | openssl sha1 -binary | openssl base64

keytool -exportcert -alias skill_developer -keystore C:\Users\munki\Desktop\1번JKS.jks | openssl sha1 -binary | openssl base64


추가 :: 혹시 몰라서 제가 사용한 openssl 파일도 올려드리겠습니다.

Win64OpenSSL_Light-1_1_1b.exe






Win64OpenSSL_Light-1_1_1b.exe
3.53MB