안녕하세요! 오늘은 구글 스토어에 등록하기 위해 안드로이드 스튜디오에서는 무엇을 해야하는지에 대해서 집고 넘어가려 합니다.
우선 구글 스토어 등록에 관한 포스팅입니다. 다음을 참조하여 구글 스토어에 등록을 하면 됩니다.
(2만원~3만원 정도의 돈이 들어요!!)
https://support.google.com/googleplay/android-developer/answer/6112435?hl=ko
여기 과정을 천천히 따라가다보면 결제하는 순간이 오고 결제 이 후에는 본격적으로 앱을 스토어에 등록할 수 있는 상황이 됩니다.
구글 스토어 등록에 대한 포스팅은 정말 많습니다.
하지만 등록하면서 발생하는 문제에 대해선 포스팅이 많이 적고 안드로이드 스튜디오에서 발생하는 문제 때문에 스토어 등록에
차질이 생기는 부분도 포스팅 수가 적습니다.
따라서 이번 포스팅을 통해 발생 가능한 문제에 대해서 알려드리겠습니다.
1. 지원하지 않는 기기로 구글 스토어에 등록을 하였으나
다른 사용자들이 스토어에서 찾아볼 수 없는 경우
이러한 부분은 다른 포스팅 글을 보게 되면 주로 구글 스토어 앱에서 데이터와 캐시를 제거하고 새로 시작하면
된다는 말이 많을 것이다.
하지만 이렇게 하더라도 안되는 경우는 앱 자체에서 문제가 있는 것이다.
이렇게 지원하는 기기가 얼마나 되는지 확인을 먼저 해야한다.
지원하는 기기가 없을 경우 다음과 같은 문제가 발생하게 되는데, 그 부분은 Manifest에서 찾아볼 수 있다.
Manifest는 그럼 무엇일까? 어떤 역할을 하는 것일까?
Manifest는 activity의 출석부 같은 역할을 한다. 또한 여기선 meta-data도 관리하여 api키를 활용하거나 서비스 관련 내용
provider 관련 내용들을 관리하게 된다.
그에 따라 meta-data 부분에서 발생한 문제일 수 있는데 대부분 지원하지 않는 기기 문제일 경우라면
permission 문제일 경우가 크다.
Manifest에선 다음과 같이 퍼미션을 관리하게 되는데 , 퍼미션 중에 버전이 정말 낮은 또는 정말 높은 내용이 들어갈 경우
기기가 지원을 안할 수 있다는 점이다.
*** Permission ****
*** provider / meta-data ***
https://developer.android.com/reference/android/hardware/camera2/package-summary.html
다음 링크는 android-hardware-camera2 내용인데 관련 permission을 manifest에 주면 지원하는 기기가 없을 것이다.
이유는 버전이 매우 높은 부분이기도 하고 아직 사용하는 기기도 많이 적기 때문에 발생하는 문제이다.
따라서 문제가 지원하는 기기가 아니라고 하는 오류가 발생할 경우에는 manifest에서도 확인을 해봐야 한다.
2. graddle에 targetSDK 부분이 높이 설정 되어 있을 경우
graddle의 역할은 sdk 버전 관리와 앱을 스토어에 등록할 떄 release 버전의 apk를 관리하는 부분이고,
사용할 라이브러리 , apk 등을 설정하여 컴파일 하는 부분이다.
*** 라이브러리 컴파일 후 사용 ***
이처럼 사용할 라이브러리를 graddle의 dependencies에 적어주고 컴파일을 하게 되면 내용이 추가되면서
import 할 수 있다.
*** SDK 관리 / release apk version 관리 ***
다음과 같이 SDK 버전도 관리할 수 있는데, targetSDKVersion이 너무 높을 경우 다른 기기에서 호환이 안될 가능성이 있기 때문에
적당히 설정을 해줘야 한다.
또한 versionCode 같은 경우는 구글 스토에어 apk 등록할 때의 버전을 가리키기 때문에 업로드 할 때마다 versionCode를 다르게
해서 올려야 한다. (apk 추출할 떄)
versionName은 구글 스토어에 apk를 올릴 때 이름을 말하며 이는 중복되어도 무관하다.
3. 안드로이드 스튜디오에서 apk를 release 한 뒤 스토에어 등록하였는데
앱 사이닝 키를 허용하여 해쉬키가 바뀌었을 경우
(주로 카카오 계정 , 페이스북 계정과 같이 sns 계정을 이용한 로그인을 만들었을 때 발생하는 문제)
SNS계정을 이용한 로그인을 앱의 기능에 넣었을 경우 구글 스토어에서 앱 등록시 앱 사이닝 키 허용을 하지 않고 등록하면 문제가 되진 않는데, 앱 사이닝 키를 허용하고 등록하면 문제가 발생한다.
우선 두 가지 방법으로 설명하겠다.
1. 앱 등록 시 앱 사이닝 키를 허용하지 않고 구글 스토어에 apk를 등록하는 경우
보통은 개발 단계에서 SNS 계정으로 로그인을 구현할 때 packageManager를 통해서 기기 당 유일한 hash-key를 뽑아내어
개발자 사이트 (카카오 개발자 사이트 , 페이스북 개발자 사이트 등..) 에 입력하여 구현하였을 것이다.
(개발자모드)
이는 개발과정에서만 사용할 수 있는 방법으로 구글 스토어에 등록할 경우 이 해쉬키는 유일한 해쉬키이기에
앱 다운로드 사용자들은 사용할 수 없을 것이다.
앱을 다운로드 하는 사용자들이 모두 사용하기 위해선 구글 스토어에 등록하기 위해 apk를 추출할 때
.jks 파일을 먼저 추출해내는데 이 추출한 파일을 해쉬키로 만드는 작업을 거쳐야 한다.
여기서 만든 해쉬키는 마찬가지로 개발자 사이트에 해쉬키로 등록하면 된다.
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
다음과 같이 release된 키(.jks)를 찾아가 openssl을 통해서 sha-1 방식으로 해슁 작업을 한다. 그렇게 나온 해쉬키를 개발자 사이트에
등록하면 된다.
2. 앱 등록 시 앱 사이닝 키를 허용 한다고 했을 경우
여기서 앱 서명 인증서 부분에서의 SHA-1 인증서 지문으로 나와있는 내용을 역으로 해슁 작업을 하여 해쉬키를 뽑아내어야만 한다.
직접 openssl를 이용해서 해도 좋지만 Hex to Base64 convertor를 사용하여 해도 됩니다.
http://tomeko.net/online_tools/hex_to_base64.php?lang=en
저는 여기서 SHA-1 인증서 지문의 내용을 입력하여 해쉬키를 뽑아내었고 이를 개발자 사이트에 등록하여 사용하고 있습니다.
지금까지 구글 스토어에 앱을 등록하였을 때 발생할 수 있는 문제들 그리고 간단하게 Manifest와 graddle에 대해서 소개해드렸습니다.
감사합니다 ^_^
'Android' 카테고리의 다른 글
Firebase Messaging 관리 (2) | 2023.01.17 |
---|---|
Kotlin 문법2 - Class (0) | 2023.01.17 |
Kotlin 문법1 - 변수/Scope (0) | 2023.01.17 |
액티비티(Activity) (0) | 2023.01.17 |
Service & Thread (0) | 2018.03.13 |