I’d really appreciate some help. I’d like to distribute my client’s app for them.
How do I update a keystore that
- I previously provided to Expo and tried to make a build with, where the build failed with a log mentioning the password was wrong, possibly because
- While building, when trying to upload the keystore the previous publisher gave me, and expo-cli asked for the keystore password, alias, and key password, I guessed these values based on examples of how to use the pepk-jar tool. The “Running Gradle” build logs at the end mention
> Task :app:packageRelease FAILED [stderr] FAILURE: Build failed with an exception. [stderr] * What went wrong: [stderr] Execution failed for task ':app:packageRelease'. [stderr] > com.android.ide.common.signing.KeytoolException: Failed to read key --------- from store "/tmp/turtle/keystore------.jks": Keystore was tampered with, or password was incorrect [stderr] * Try: [stderr] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. [stderr] * Get more help at https://help.gradle.org [stderr] BUILD FAILED in 5m 8s 1467 actionable tasks: 1467 executed Error: ./gradlew exited with non-zero code: 1 at ChildProcess.completionListener (/app/turtle/node_modules/@expo/xdl/node_modules/@expo/spawn-async/build/spawnAsync.js:52:23) at Object.onceWrapper (events.js:317:30) at emitTwo (events.js:126:13) at ChildProcess.emit (events.js:214:7) at maybeClose (internal/child_process.js:915:16) at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5) ... at spawnAsync (/app/turtle/node_modules/@expo/xdl/node_modules/@expo/spawn-async/build/spawnAsync.js:17:21) at spawnAsyncThrowError (/app/turtle/node_modules/@expo/xdl/build/detach/ExponentTools.js:235:45) at buildShellAppAsync (/app/turtle/node_modules/@expo/xdl/build/detach/AndroidShellApp.js:881:11) at <anonymous>
- And has no password, according to the previous publisher of the app. I’m reimplementing an app in Expo that previously was made in Ionic/Cordova, and was distributed on App and Play Store.
When I use
expo credentials:manager -p android, or
expo build:android --clear-credentials -t apk, both reach a point where
if I answer “I want to upload my own file” when it asks “Will you provide your own Android keystore?”
they ask me for the keystore password and key password, but they won’t accept an empty password if I press Enter.
When expo-cli asks you for the keystore and key passwords, it wants the passwords of the key you’re trying to upload and update with, right? Not the keystore already uploaded?
Dereks-Mac-mini:mode-lite derek$ expo credentials:manager -p android ? You are currently in a directory with @dereksleung/------- experience. Do you want to select it? Yes @dereksleung/mode-lite Upload Keystore hashes keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect Failed to parse the keystore Error: keytool exited with non-zero code: 1 ? What do you want to do? Update Upload Keystore ? Will you provide your own Android Keystore? I want to upload my own file WARNING! In this mode, we won't be able to make sure that your crdentials are valid. Please double check that you're uploading valid files for your app otherwise you may encounter strange errors! When building for IOS make sure you've created your App ID on the Apple Developer Portal, that your App ID is in app.json as `bundleIdentifier`, and that the provisioning profile you upload matches that Team ID and App ID. ? Path to the Keystore file. /Users/derek/------- ? Keystore password [hidden] (I must add one character for expo-cli to accept it) ? Key alias ? Key password [input is hidden] (expo-cli does not accept an empty answer)
Relatedly, I’m wondering what it means I’ve done if running
expo opt-in-google-play-signing gets a printout of the mistaken keystore credentials I entered that first build, like the following:
Dereks-Mac-mini:mode-lite derek$ expo opt-in-google-play-signing Make sure you are not using Google Play App Signing already as this process will remove your current keystore from Expo servers. You can check whether you are using Google Play App Signing here: https://play.google.com/apps/publish. Select your app and go to "Release management" → "App signing" tab. If you are already using Google Play App Signing, there will be a message that says, "App Signing by Google Play is enabled for this app", at the top of the page. ? Is Google Play App Signing enabled for this app? No Keystore credentials Keystore password: ----- Key alias: ------ Key password: ----- Path to Keystore: /Users/derek/-----_sign.jks.bak
Expo CLI 3.5.0 environment info:
OS: macOS 10.14.6
Shell: 3.2.57 - /bin/bash
Node: 10.15.3 - ~/.nvm/versions/node/v10.15.3/bin/node
Yarn: 1.21.1 - /usr/local/bin/yarn
npm: 6.13.4 - ~/.nvm/versions/node/v10.15.3/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
Android Studio: 3.4 AI-183.6188.8.131.5292245
Xcode: 10.3/10G8 - /usr/bin/xcodebuild
expo: ^34.0.0 => 34.0.4
react: 16.8.3 => 16.8.3
react-native: https://github.com/expo/react-native/archive/sdk-34.0.2.tar.gz => 0.59.8
react-navigation: ^3.11.0 => 3.13.0
Thanks so much for having a look!