How to use Google App Signing and Connect Expo to Play Console?

Please run expo diagnostics and paste the log that’s printed out along with your question or issue!

Expo CLI 3.11.7 environment info:
System:
OS: Windows 10
Binaries:
Yarn: 1.21.1 - C:\Program Files (x86)\Yarn\bin\yarn.CMD
npm: 6.13.4 - C:\Program Files\nodejs\npm.CMD
IDEs:
Android Studio: Version 3.5.0.0 AI-191.8026.42.35.6010548

Hi

Following the documentation I just built my an app for Android using expo build:android. I was asked if I wanted to let expo generate a keystore for me (recommended), which I did. I uploaded the apk to Google Play Console, and did all the necessary admin.

I want to know how to link my Google Play Console app listing with the expo account so that I can use expo publish to do OTA instead of having to build and upload an .APK or .AAB every time something changed.
As of yet I have not uploaded any certificates to Expo, or uploaded the keystore information to the play store.

Looking at the App Signing docs it doesn’t state under Option 1, “If you’re deploying a new app…” that I should upload the App Signing cert from Google or the Keystore file from Expo anywhere. I don’t want to mess this up, as it seems it can be quite a hassle to fix it.

OTA updates are not related to anything in play store. You need to first release apk or app bundle as regular android app and later every time you run expo publish js bundle on our servers will be updated. Depending on your OTA settings apps installed on user devices is checking expo servers for update and downloading if there is update (it works only for js and asset, it won’t affect anything native like sdk updates or system specific settings)

expo build is also running publish, so you need to be careful not to update accidentally production app, use release-channelto protect against that

https://docs.expo.io/versions/latest/workflow/publishing/
https://docs.expo.io/versions/v36.0.0/distribution/release-channels/

1 Like

Thanks for the quick reply!

Okay, that makes sense! I didn’t realise this:

Depending on your OTA settings apps installed on user devices is checking expo servers for update and downloading if there is update (it works only for js and asset, it won’t affect anything native like sdk updates or system specific settings)

I thought that the flow went Expo → Play store → User, and didn’t realise that the app can be updated without the play store middle man.

When using expo upload:android --key <key> after following this guide for setting up a service account - that just updates/reuploads the .aab/.apk saved on the Play Store console?
Which <key> should I use - the one generated from running expo build:android initially, or the App Signing certificate that I downloaded from the console?

So if I understand correctly - a typical workflow looks like this:

  1. expo init, create app, test on expo client using expo start, configure app.json, expo build --release-channel [channel] (which also publishes).
  2. Upload .aab/.apk to play store, do admin to get it released.
  3. To update app on Play store (when new users download it): expo upload:android <key> where key is ??
  4. To update changes to the JS for users that have already downloaded the app: expo publish --release-channel [channel] - not required to build again.

Sorry for the walls of text.

https://docs.expo.io/versions/latest/distribution/uploading-apps/
but you don’t need to use upload command for android, you can do this manually (and on the first time you need to do this manually)

This topic was automatically closed 20 days after the last reply. New replies are no longer allowed.