보유하고 있는 구글 계정 (2단계 인증 완료)으로 등록 수수료 현재 기준으로 25달러(3만원)을 결제하면 구글 플레이 콘솔에 앱을 배포할 수 있는 개발자가 된다.
우선 내 프로젝트의 안드로이드 빌드 설정을 확인해서 package name을 꼭 수정해야 한다. React native CLI를 통해 프로젝트를 생성하면 package name이 자동으로 생성되고 이 후 작업, 빌드 상황에 따라 package name이 여기저기 등록된다. 프로젝트 첫 생성 시에 프로젝트 명으로 package name을 변경하고 관리하는 것이 효율적이지만 나의 경우 배포 직전에 이런 사실을 알게 되었다.
나와 같은 상황이라면 아래의 표의 위치에서 package name이 종속된 부분을 모두 찾아 바꿔주면 된다.
| 파일 | 경로 |
|---|---|
| app.json | ./ |
| index.js | ./ |
| package.json | ./ |
| settings.gradle | ./android/ |
| _BUCK | ./android/app |
| build.gradle | ./android/app |
| AndroidManifest.xml | ./android/app/src/main/ |
| MainActivity.java | ./android/app/src/main/java/** |
| strings.xml | ./android/app/src/main/res/values |
다음은 keystore(서명 키) 생성이다. 서명 키는 안드로이드 앱 고유의 값으로 파이어베이스나 구글 플레이 콘솔 등 외부 서비스와 연동할 때 필수로 입력해줘야 하는 임의의 키이다.
프로젝트 폴더 내에서 서명 키 생성 명령어를 입력하면 아래와 같은 절차를 진행할 수 있다.
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
키 저장소 비밀번호 입력 : 비밀번호입력
새 비밀번호 다시 입력 : 비밀번호입력
이름과 성을 입력하십시오. : practice
조직 단위 이름을 입력하십시오. : practice
조직 이름을 입력하십시오. : practice
구/군/시 이름을 입력하십시오? : Gangnam-gu
시/도 이름을 입력하십시오. : Seoul
이 조직의 두 자리 국가 코드를 입력하십시오 : kr
CN=OINGBONG, OU=OINGBONG, O=OINGBONG, L=Gangnam-gu, ST=Seoul, C=kr 이(가) 맞습니까? y
다음에 대해 유효기간이 36,500일인 2,048비트 RSA 키 쌍 및 자체 서명된 인증서 (SHA256withRSA)를 생성하는중
: CN=practice, OU=practice, O=practice, L=Gangnam-gu, ST=Seoul, C=kr
<relesase_key>에 대한 키 비밀번호를 입력하십시오.
(키 저장소 비밀번호와 동일한 경우 Enter 키를 누름) :
키스토어 파일 생성완료
~~.keystore가 생성되었다면 정상적으로 keystore 생성이 된 것이다. 이후 keystore 파일을 android/app으로 옮긴다.
android/gradle.properties에 아래의 코드를 추가한다.
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-project-alias
MYAPP_RELEASE_STORE_PASSWORD=비밀번호입력
MYAPP_RELEASE_KEY_PASSWORD=비밀번호입력
모든 작업이 끝났다면 터미널에 빌드 명령어를 실행한다.
cd android && ./gradlew bundleReleasecd android && ./gradlew assembleRelease빌드가 완료되면 android/app/build/outputs에 폴더 별로 빌드 파일이 생성된다.
빌드 시 용량 최적화가 필요하다면 android/app/build.gradle에 아래 코드를 추가한다. 나의 경우 스토어에 빌드된 파일을 업로드할 때 앱 사이즈 관련 이슈가 없어서 적용하지 않았다.
def enableSeparateBuildPerCPUArchitecture = true // CPU별로 파일 분리, 분할 압축 def enableProguardInReleaseBuilds = true // 코드 난독화에 필요한 proguard를 활성화 buildTypes { release { shrinkResources true // 불필요한 리소스 제거 ... } }이 설정을 할 경우 다음 명령어로 실행해야 오류가 반환되지 않는다고 한다.
cd android && ./gradlew app:assembleRelease --stacktrace

구글 플레이 콘솔에서 아까 만든 개발자 계정으로 로그인 한 후 앱 만들기를 통해 등록할 앱의 기본 정보를 입력할 수 있다. 생성한 앱에 접속하면 대시보드에서 앱 등록의 절차를 튜토리얼해준다.

앱의 정보에 대해 입력하다 보면 몇 가지 준비가 필요한 것들이 있다.
앱아이콘
PNG 또는 JPEG, 최대 1MB, 512 x 512px 1개의 이미지
그래픽 이미지
PNG 또는 JPEG, 최대 15MB, 1024px X 500px 1개의 이미지
스크린샷
PNG 또는 JPEG, 장당 최대 8MB, 가로세로 비율 16:9 또는 9:16, 가로세로 길이는 320px X 3840px 사이의 2~8개의 이미지
개인정보처리방침
현재 기준 (2023.11.07) 개인정보보호 포털을 통해 공공으로 제공하는 개인정보처리방침 서비스가 일시 중단되었다. 구글 Docs를 통해 개인정보처리방침을 만들 수 있는데 나의 경우 다음과 같이 제작했다.
https://docs.google.com/document/d/1YmlBurJkbUXGWOVgMVKSDiHHyvP4v7VFwI-DZsRII8o/edit?usp=sharing
구글 플레이 콘솔은 안정적인 앱을 배포하기 위해 테스트 버전 배포를 지원한다. 나의 경우 포트폴리오를 위한 앱이지만 실제 서비스될 정도의 완성도가 있는지 검증이 필요했기 때문에 프로덕션 + 공개 테스트를 진행했고 현재 앱 검토 중이다.