Can' update App in PlayStore / Problems with signing and fingerprint

Hello,

I have successfully published my app as a bundle (aab) on the PlayStore. I wanted to install a small update after a few days, because there are problems with the keyboard. I have executed “expo build:android -t app-bundle” as usual.

Afterwards I tried to upload directly via the cli (after it failed with the message that the fingerprint is invalid) also via the PlayStore. I got the same message that the fingerprint of the upload key does not match.

I have tried to download the upload key, but I get the following message:

expo fetch:android:upload-cert
There is no valid Keystore defined for this app
Writing upload key to /my/path/to/xxxxx_upload_cert.pem
keytool exited with non-zero code: 1

I had “Google App Signing” enabled in PlayStore from the beginning, even before I knew anything about an “expo opt-in” command. There was already an upload certificate in my PlayStore. I let Expo manage the entire process and never generated anything myself.

Now I’m stuck here and don’t know what to do. I can’t download any hashes or upload certificates, nor can I update my app. This is absolute horror right now. I had extra Expo manage everything to avoid problems right here.

How can we fix the problem now? It is really urgent.

  Expo CLI 3.11.3 environment info:
    System:
      OS: macOS 10.14.6
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.16.3 - /usr/local/bin/node
      Yarn: 1.13.0 - /usr/local/bin/yarn
      npm: 6.13.2 - ~/Gitlab/nightstomp/netstar/nummernschild-app/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    IDEs:
      Android Studio: 3.5 AI-191.8026.42.35.5977832
      Xcode: 11.3/11C29 - /usr/bin/xcodebuild
    npmPackages:
      expo: ^36.0.0 => 36.0.0 
      react: 16.9.0 => 16.9.0 
      react-native: https://github.com/expo/react-native/archive/sdk-36.0.0.tar.gz => 0.61.4 
      react-navigation: ^4.0.10 => 4.0.10 

Hi. I have no experience with uploading to the Play store, but if you expo publish then the existing app on the Play store should download the new JavaScript and assets. (i.e. an OTA update)

I have made changes to app.json which requires to build a new standalone native app. Publishing is working but I need to sign a new App Bundle

Just as a hint/help for other users:

  1. absolute new project
  2. project was already submitted to Google Play Store (with activated Google App Signing) but without calling the “expo opt-in-google-play” command
  3. Always chosen “Let expo handle it” (never myself)

After trying to update the binaries (due to changes inside the app.json and the broken Keyboard on Android on SDK 36), I got the message, that the fingerprint is wrong. Trying to fetch hashes or upload:cert always ends in the error.

I requested an upload key reset on Google now and they already answered. I build a new binary, this time I generated an upload cert and “jks” myself and chosen to use my own credentials. I build the App-Bundle with --clear-credentials / -c. Now I have to wait for Google to update my provided .PEM file. But it should work afterwards.

If I try to fetch the upload key now, it works, but it’s just pointless, as its only returning my OWN upload cert back to me, which might be useful in case if I lose it, but I needed it before I generated one myself. I don’t know if this is expected or bad documented.

Hope this is gonna help you folks. But for me, as a new EXPO user, this was a terrible first start using the CLI and let Expo handle it, because it failed HARD right after my first try to update a binary.

1 Like

(Cross-posting an update and resolution from another topic.)

We believe this issue has been fixed and that regenerating credentials will address the issue. Projects that didn’t have this issue should be unaffected.

We found there was an issue with saving credentials, so when commands like “expo fetch:android:keystore” looked for credentials and found none, that was actually the case. Saving credentials should now be fixed, so after regenerating or reuploading them, they should now be saved successfully so they can be fetched.