보유하고 있는 구글 계정 (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 bundleRelease
cd 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
구글 플레이 콘솔은 안정적인 앱을 배포하기 위해 테스트 버전 배포를 지원한다. 나의 경우 포트폴리오를 위한 앱이지만 실제 서비스될 정도의 완성도가 있는지 검증이 필요했기 때문에 프로덕션 + 공개 테스트를 진행했고 현재 앱 검토 중이다.