I’m trying to build and deploy my expo application to the play store. This application is a rebuild of an existing application so I downloaded the signing certificate and gave it to expo with the different keys (that I previously used in fastlane). The build proceed well, but when I try to upload it on the play store, I get the following error.
[!] Google Api Error: apkInvalidSignature: APK signature is invalid or does not exist. Error from apksigner: ERROR: JAR_SIG_NO_SIGNATURES: No JAR signatures
Do you have any idea why it looks like it doesn’t sign the application ?
hi @jeremiedrouet, sorry you are having this problem! It’s hard to figure out where exactly things are going wrong, but we should be doing jar signing. Could you try running your android standalone build locally – you’ll probably get more debugging tools and information at your disposal that way.
@quinlanj can give me more information on how I can run your script ?
I detached my app in order to build it locally, but I don’t know how to use your script
[22:49:51] Using gulpfile ~/SideProjects/expo/tools-public/gulpfile.js
[22:49:51] Starting 'android-shell-app'...
[22:49:51] 'android-shell-app' errored after 2.44 ms
[22:49:51] Error: Can't determine exponent directory
at exponentDirectory (/xdl/src/detach/AndroidShellApp.js:27:11)
at Object.<anonymous> (/xdl/src/detach/AndroidShellApp.js:281:34)
at Generator.next (<anonymous>)
at step (/Users/simar/SideProjects/expo/tools-public/node_modules/xdl/build/detach/AndroidShellApp.js:496:191)
at /Users/simar/SideProjects/expo/tools-public/node_modules/xdl/build/detach/AndroidShellApp.js:496:437
at new Promise (<anonymous>)
at Object.<anonymous> (/Users/simar/SideProjects/expo/tools-public/node_modules/xdl/build/detach/AndroidShellApp.js:496:99)
at Object.createAndroidShellAppAsync (/xdl/src/detach/AndroidShellApp.js:267:1)
at createAndroidShellAppWithArguments (/Users/simar/SideProjects/expo/tools-public/gulpfile.js:82:26)
at taskWrapper (/Users/simar/SideProjects/expo/tools-public/node_modules/undertaker/lib/set-task.js:13:15)
okay i figured out why it wasn’t working for me, the jar wasn’t getting signed because the alias i entered for my keystore was wrong.
ie.
? Path to keystore: /<path-to-my-keystore>/my-release-key.keystore
? Keystore Alias: my-key-alias
I checked my keystore alias by running this command keytool -keystore my-release-key.keystore -list -v, it will ask you for the password then print out the details of the keystore, where it will have the key alias like:
Alias name: my-key-alias
Suggestion for expo: you can actually can get the key alias by using the key store path and the password, this would remove 1 step.