How to Release to Google Play

This guide will explain how to compile your Android app into an APK file, sign it and release it on to Google Play.

Create a Key

IMPORTANT: keep the key safe & secure, and do not forget the password! You will need this key every time you push an update to Google Play Store.

You can create a key with the terminal or with Android Studio.

With Terminal

  • The lines in the script below will do the following
    • Make a directory to store keys and navigate to it
    • Create a KEYS variable of the keys directory
    • Call a script to create a keystore with a key that is valid for 10,000 days
mkdir ~/keys && cd ~/keys
export KEYS=~/keys
keytool -genkey -v -keystore google-play.jks -keyalg RSA -keysize 2048 -validity 10000 -alias google-play-key
  • Enter a password for the keystore and confirm it
  • You will need to answer some questions, or leave blank
    • What is your first and last name?
    • What is the name of your organizational unit?
    • What is the name of your organization?
    • What is the name of your City or Locality?
    • What is the name of your State or Province?
    • What is the two-letter country code for this unit?
  • Is CN=<name>, OU=<organizational unit>, O=<organization>, L=<locality>, ST=<state>, C=<country> correct?
    • “yes”
  • Enter a password for the key, or leave blank to use the same password as the keystore
  • Done! The keystore has been created and stored at ~/keys/google-play.jks

With Android Studio

  • Build > Generate Signed APK
    • Module: android
  • Next
  • Key Store Path > Create New
    • Key store path: path-to-user/keys/google-play.jks
    • Password / Confirm: password for keystore
    • Alias: a name to identify the key (e.g. “google-play-key”)
    • Password / Confirm: password for key (can be the same as keystore)
    • Certificate: fill in your name, organisation, location
    • Ok
  • Done! The keystore has been created and stored at path-to-user/keys/google-play.jks

Sign & Package the App

Again, this can be done with the Terminal or Android Studio

With Terminal

  • Run the below script in the root of the Android project
  • The lines in the script below do the following
    • Generate the APK. For Windows, use “gradlew” instead of “./gradlew”
    • Navigate to the release directory
    • Align the APK
    • Sign the APK
    • Verify the APK
    • Copy the signed APK to the project root, so that it is easier to find
    • Navigate to project root
./gradlew assembleRelease
cd app/build/outputs/apk/release
zipalign -v -p 4 app-release-unsigned.apk app-release-unsigned-aligned.apk
apksigner sign --ks $KEYS/google_play.jks --out app-release-release.apk app-release-unsigned-aligned.apk
apksigner verify app-release-release.apk
cp app-release-unsigned.apk ../../../../../android-release.apk
cd ../../../../..
  • Done! The signed APK is named “android-release.apk” and is located in the project root.

With Android Studio

  • Build > Generate Signed APK
    • Module: android
  • Next > fill in key details
    • Key Store Path: path-to-user/keys/google-play.jks
    • Key Store Password: password of keystore
    • Key Alias: name to identify the key (e.g. “google-play-key”)
    • Key Password: password of key (can be the same as keystore)
  • Next > fill in details
    • APK Destination Folder: path-to-project/project-name/
    • Build Type: Release
  • Finish
  • Wait for Android Studio to build the project
  • Done! The signed APK is named “android-release.apk” and is located in the project root.

Google Play Console

The rest of process is done on Google Play Console: https://play.google.com/apps/publish/. You will need to create a Google account and pay for the Google Play Developer Account.

  • Create an application
    • Click “Create Application”
    • Title: name of your application
    • Create

Upload the App

  • App releases > Production track > Manage > Create release
  • Android App Bundles and APKs to add
    • Drop or browse for your .apk file and upload
    • path-to-project/project-name/android-release.apk
  • Release name
    • “1.0.0” – the app’s first release to Google Play
  • What’s new in this release?
    • “A brand new app. I hope you enjoy!”
  • Save

Complete the Store Listing

Fill in all of the required details and the optional details that are relevant to your app.

screenshot_play_desc

The image above shows where the Short Description and Long Description are shown on Google Play Store. The left screenshot is the main listing, the right screenshot is after clicking “Read more”.

  • Product details
    • Title
    • Short Description
    • Full Description
    • Graphic Assets
      • Screenshots – phone, 7-inch tablet, 10-inch tablet
      • High resolution icon
      • Feature graphic – here are some examples
      • Promo video – upload to YouTube first
  • Categorisation
    • Application Type
    • Category
    • Content Rating
      • Save Store Listing before continuing with Content Rating!
      • Complete the questionnaire & be honest or you may get into trouble later
      • Calculate rating
      • Apply rating

Pricing & Distribution

  • Select Free or Paid
  • Countries
    • This is the country the user has set for Google Play, not necessarily the country they are currently in
    • Check Available for all the different Google Play Stores you want your app to be available in
    • Or just check all to Available, unless there is a specific reason not to
  • Primarily Child-Directed
    • If your app is aimed at children
      • Check Yes
      • Opt in to the Designed for Families programme lower down the page, user User Programs
  • Contains Ads
    • AdMob, etc
  • Consent
    • Marketing opt-out – uncheck (or check if you don’t want Google to promote your app)
    • Content guidelines – agree and check
    • US export laws – agree and check

Release

  • App Release > Production Track > Edit Release
  • Scroll to bottom > Review > Start Rollout to Production!

Related

(Coming Soon) How to Release to App Store

HOW TO: Ionic Android Ad Hoc Release

HOW TO: Ionic iOS Ad Hoc Release

Leave a Comment

Your email address will not be published. Required fields are marked *