When creating a new signing keystore in Android Studio for a signed APK or Android App Bundle, the operation can fail with errors such as “Keystore creation failed”, file-access errors, or key-generation failures.
Keystore creation failed Failed to create keystore Key generation failed java.io.FileNotFoundException java.security.KeyStoreException
There is no single cause. Common problems include an unwritable destination folder, an invalid path, an existing conflicting file, password requirements, alias problems, JDK configuration, keystore type, disk space, or security software.
Google’s current Android documentation explains that if you do not yet have a signing key, you can generate an upload key and keystore through Android Studio. It also warns developers to keep the keystore and private key secure and maintain safe backups. :contentReference[oaicite:15]{index=15}
This article explains how to diagnose Android Studio keystore creation errors and how to create and inspect a keystore directly with keytool when necessary.
- What Is an Android Keystore?
- Common Situations
- Common Causes
- 1. The Destination Folder Is Not Writable
- 2. The Parent Directory Does Not Exist
- 3. An Existing Keystore Conflicts with the New File
- 4. The Path Is Unusually Complex
- 5. The Password Does Not Meet Tool Requirements
- 6. The Key Alias Is Invalid or Unintended
- 7. JDK or keytool Is Not Working Correctly
- 8. The Keystore Type Is Not What You Expect
- 9. Disk Space Is Exhausted
- 10. Security Software Blocks File Creation
- 11. Cloud or Network Storage Locks the File
- Step 1: Test a Simple Local Destination
- Step 2: Confirm keytool Is Available
- Step 3: Check Which keytool Is Being Used
- Solution 1: Save the Keystore in a Writable Folder
- Solution 2: Create the Parent Directory First
- Solution 3: Check for an Existing File
- Solution 4: Use a Different Filename
- Solution 5: Create the Keystore in Android Studio
- Solution 6: Create the Keystore Directly with keytool
- Solution 7: Specify the Full Destination Path
- Solution 8: Specify an Alias Explicitly
- Solution 9: Specify RSA Explicitly
- Solution 10: Specify the Keystore Type
- Solution 11: Use a Valid Password
- Solution 12: Understand Store Password and Key Password
- Solution 13: Test a Short ASCII Path
- Solution 14: Avoid Cloud-Synchronized Locations During Creation
- Solution 15: Check Disk Space
- Solution 16: Check Windows Controlled Folder Access
- Solution 17: Prefer a Writable Location over Running Android Studio as Administrator
- Solution 18: Check the JDK Version
- Solution 19: Check Android Studio’s Gradle JDK
- Solution 20: Verify the Keystore After Creation
- Solution 21: Back Up the Keystore
- Solution 22: Do Not Commit the Keystore to a Public Repository
- If You See FileNotFoundException
- If You See “Access is denied”
- If “keytool is not recognized” Appears
- If the Alias Already Exists
- Can You Recreate the Keystore Repeatedly?
- Android Studio or keytool: Which Should You Use?
- Fastest Troubleshooting Order
- If the Problem Still Occurs
- Summary
What Is an Android Keystore?
A Release Android application must be digitally signed before distribution.
A keystore stores the private keys and certificates used for that signing process.
A typical Android Release signing configuration uses:
storeFile storePassword keyAlias keyPassword
Google’s current Android build documentation uses these values when configuring Release signing. :contentReference[oaicite:16]{index=16}
When you create a new signing key, a public/private key pair and certificate are stored in a keystore entry.
Oracle’s current keytool documentation states that -genkeypair generates a public/private key pair and stores the private key and certificate chain in a keystore entry identified by an alias. :contentReference[oaicite:17]{index=17}
Important: A signing keystore for a published application is a critical asset. Create secure backups immediately after successful creation.
Common Situations
- Creating a new keystore from Generate Signed App Bundle or APK
- Failure immediately after choosing a Key store path
- Failure after entering passwords and an alias
- Saving to a protected Windows folder
- Saving to a network or cloud-synchronized folder
- An existing file already has the selected name
- The JDK was recently changed
- The project was migrated from an older Android Studio environment
- Creating the keystore directly with
keytool
Common Causes
1. The Destination Folder Is Not Writable
This is one of the most common causes.
Android Studio or Java cannot create the keystore if the selected directory does not allow the current user to create files.
2. The Parent Directory Does Not Exist
For example:
C:\keys\android\release.jks
can fail if C:\keys\android has not been created.
3. An Existing Keystore Conflicts with the New File
A file with the same name may already exist, may be read-only, or may be locked by another application.
4. The Path Is Unusually Complex
Modern Java handles many Unicode paths correctly, but older tools and surrounding software can still have problems with unusual characters or very long paths.
Testing a short ASCII path is a useful diagnostic step.
5. The Password Does Not Meet Tool Requirements
Password rules depend on the Java version and command.
Older Oracle keytool documentation specifies a minimum length of six characters for key passwords. :contentReference[oaicite:18]{index=18}
6. The Key Alias Is Invalid or Unintended
An empty, mistyped, or conflicting alias can cause creation or later signing problems.
7. JDK or keytool Is Not Working Correctly
Android Studio and the system terminal can use different Java installations.
An unavailable or outdated keytool, broken PATH, or unexpected JDK can interfere with keystore generation.
8. The Keystore Type Is Not What You Expect
Common formats include JKS and PKCS12.
Oracle’s keytool provides -storetype to explicitly select the keystore type. :contentReference[oaicite:19]{index=19}
9. Disk Space Is Exhausted
A keystore is small, but the file still cannot be created if the target filesystem is completely full.
10. Security Software Blocks File Creation
Windows Controlled Folder Access or enterprise security software can block Java or Android Studio from creating files in protected directories.
11. Cloud or Network Storage Locks the File
OneDrive, Dropbox, Google Drive, NAS storage, and other synchronized locations can introduce temporary locking or permission issues.
Step 1: Test a Simple Local Destination
Try creating the keystore in a straightforward local directory.
Windows:
C:\AndroidKeys\release.jks
macOS:
/Users/user/AndroidKeys/release.jks
Linux:
/home/user/AndroidKeys/release.jks
Create the parent directory first and confirm that your user account can write to it.
Step 2: Confirm keytool Is Available
Run:
keytool -help
or:
keytool -J-version
If this works, the Java key-management tool is available.
Step 3: Check Which keytool Is Being Used
Windows:
where keytool
macOS or Linux:
which keytool
If multiple installations appear, make sure an obsolete JDK is not being selected first.
Solution 1: Save the Keystore in a Writable Folder
Use a normal user-owned directory such as:
C:\Users\User\AndroidKeys\release.jks
or:
/Users/user/AndroidKeys/release.jks
Recommended: There is normally no reason to store a signing keystore in Program Files, System32, the Windows directory, or the Android Studio installation directory.
Solution 2: Create the Parent Directory First
Windows PowerShell:
New-Item -ItemType Directory -Path C:\AndroidKeys
macOS or Linux:
mkdir -p ~/AndroidKeys
Then try creating the keystore again.
Solution 3: Check for an Existing File
Windows PowerShell:
Get-Item C:\AndroidKeys\release.jks
macOS or Linux:
ls -l ~/AndroidKeys/release.jks
Do not delete or overwrite an existing keystore unless you know exactly what it is.
Important: An existing file may be the signing key for an already published application.
Solution 4: Use a Different Filename
Try:
release-2026.jks
If that succeeds, the original filename or existing file was involved.
Solution 5: Create the Keystore in Android Studio
Open:
Build → Generate Signed App Bundle or APK
Select the desired output type and create a new keystore.
Google’s current Android documentation states that Android Studio can generate an upload key and keystore when you do not already have one. :contentReference[oaicite:20]{index=20}
The dialog typically asks for:
- Key store path
- Password
- Key alias
- Key password
- Validity period
- Certificate identity information
Solution 6: Create the Keystore Directly with keytool
If Android Studio fails, use keytool to determine whether the problem is the GUI or the underlying Java environment.
keytool -genkeypair -v -keystore release.jks -alias release -keyalg RSA -keysize 2048 -validity 10000
You will be prompted for the keystore password, key password, and certificate identity information.
Oracle’s current documentation states that -genkeypair generates the public/private key pair and stores the private key and certificate in an alias-identified keystore entry. :contentReference[oaicite:21]{index=21}
Solution 7: Specify the Full Destination Path
Windows:
keytool -genkeypair -v -keystore "C:\AndroidKeys\release.jks" -alias release -keyalg RSA -keysize 2048 -validity 10000
macOS or Linux:
keytool -genkeypair -v -keystore ~/AndroidKeys/release.jks -alias release -keyalg RSA -keysize 2048 -validity 10000
If this works, recheck Android Studio’s keystore path.
Solution 8: Specify an Alias Explicitly
-alias release
Oracle documents the alias as the identifier of the newly generated keystore entry. :contentReference[oaicite:22]{index=22}
Solution 9: Specify RSA Explicitly
For a straightforward diagnostic configuration:
keytool -genkeypair -keystore release.jks -alias release -keyalg RSA -keysize 2048 -validity 10000
This avoids relying on an unexpected algorithm default in a troubleshooting scenario.
Solution 10: Specify the Keystore Type
JKS:
keytool -genkeypair -keystore release.jks -storetype JKS -alias release -keyalg RSA -keysize 2048 -validity 10000
PKCS12:
keytool -genkeypair -keystore release.p12 -storetype PKCS12 -alias release -keyalg RSA -keysize 2048 -validity 10000
Oracle’s keytool documentation provides the -storetype option for selecting the keystore implementation. :contentReference[oaicite:23]{index=23}
Solution 11: Use a Valid Password
If the password is unusually short, use a stronger value.
Older Oracle documentation specifies a minimum six-character key password. :contentReference[oaicite:24]{index=24}
Too short: abc
Example:
MySecureKey2026!
For real signing keys, use a strong password rather than merely satisfying the minimum length.
Solution 12: Understand Store Password and Key Password
Keystore password → protects the keystore Key password → protects the private-key entry
Oracle’s historical and current keytool behavior allows a separately protected private key. In older documented flows, pressing Return at the key-password prompt uses the keystore password as the key password. :contentReference[oaicite:25]{index=25}
Using the same value can simplify management when that matches your Android Studio workflow.
Solution 13: Test a Short ASCII Path
For troubleshooting, use:
C:\AndroidKeys\release.jks
If this succeeds while the original path fails, investigate path length, permissions, synchronization, or unusual characters.
Solution 14: Avoid Cloud-Synchronized Locations During Creation
For diagnosis, avoid:
- OneDrive
- Dropbox
- Google Drive
- NAS storage
- Network drives
Create the keystore locally first, then make a secure backup separately.
Solution 15: Check Disk Space
Windows PowerShell:
Get-PSDrive C
macOS or Linux:
df -h
Free space if the target filesystem is full.
Solution 16: Check Windows Controlled Folder Access
If Windows Security is blocking file creation in protected folders, first try a normal user-owned directory.
Security: Do not permanently disable ransomware protection merely to create a keystore. Prefer a different destination or an explicit application allow rule when appropriate.
Solution 17: Prefer a Writable Location over Running Android Studio as Administrator
On Windows, do not make administrator mode your default solution to a file-permission problem.
A normal user-writable destination is generally safer and easier to maintain.
Solution 18: Check the JDK Version
java -version keytool -J-version
Confirm that the intended Java environment is being used.
Solution 19: Check Android Studio’s Gradle JDK
Open:
Settings → Build, Execution, Deployment → Build Tools → Gradle → Gradle JDK
Remember that Android Studio’s internal Java environment and the terminal’s keytool environment may not always be identical.
Solution 20: Verify the Keystore After Creation
Immediately inspect the new file:
keytool -list -v -keystore release.jks
Confirm:
- The alias
- The entry type
- The certificate validity
- The SHA-256 fingerprint
Solution 21: Back Up the Keystore
After successful creation, create a secure backup immediately.
Google’s Android documentation explicitly warns developers to keep the keystore and private key secure and maintain secure backups. :contentReference[oaicite:26]{index=26}
Recommended: Do not store the only copy of the keystore and its password in the same location.
Solution 22: Do Not Commit the Keystore to a Public Repository
Consider excluding sensitive files such as:
*.jks *.keystore keystore.properties
from public version control and manage signing credentials as secrets.
If You See FileNotFoundException
java.io.FileNotFoundException
Check:
- Whether the parent directory exists
- Whether the destination is writable
- Whether the path is correct
- Whether another process has locked the file
If You See “Access is denied”
Access is denied
Prioritize folder permissions.
Try a new directory under your user profile before changing system-wide permissions.
If “keytool is not recognized” Appears
Windows may report:
'keytool' is not recognized as an internal or external command
This means the appropriate JDK bin directory is not available through PATH, or a suitable JDK is not installed.
Check:
where keytool
You can also use the keytool included with the Java runtime bundled with Android Studio when appropriate.
If the Alias Already Exists
If you are adding a new key to an existing keystore and the selected alias already exists, inspect the file first:
keytool -list -keystore release.jks
Do not remove an existing signing key from a published application’s keystore merely to reuse the alias.
Can You Recreate the Keystore Repeatedly?
For an unpublished test application, yes, if you intentionally want a new signing identity.
For a published application, signing-key continuity matters.
Google warns that if an app not using Play App Signing loses its app signing key, future updates cannot be published with the required same key. :contentReference[oaicite:27]{index=27}
Important: Do not solve a keystore creation problem for an existing published app by casually generating a completely new signing key.
Android Studio or keytool: Which Should You Use?
Android Studio is normally the easiest option:
- Simple graphical workflow
- Integrated with signed APK/AAB generation
- Clear input fields
keytool is useful for troubleshooting:
- Direct Java-level diagnostics
- Explicit keystore format and algorithm selection
- Useful for CI/CD and automation
If Android Studio cannot create the keystore but keytool can, investigate the GUI path or configuration rather than the Java cryptographic subsystem itself.
Fastest Troubleshooting Order
- Create a simple local
AndroidKeysdirectory. - Use a short ASCII path.
- Check whether a file with the same name already exists.
- Use a sufficiently strong password.
- Try Android Studio again.
- If it still fails, use
keytool -genkeypair. - Verify the new file with
keytool -list. - Back up the successful keystore securely.
If the Problem Still Occurs
Verify all of the following:
- The parent directory exists.
- The destination is writable.
- You are not overwriting an important existing file.
- You tested a short local path.
- You avoided OneDrive, NAS, or network storage for diagnosis.
- The password is not too short.
- An alias was entered.
keytoolis available.- You checked the active JDK.
- You tested JKS or PKCS12 explicitly if needed.
- The target disk has free space.
- Security software is not blocking file creation.
- You verified the created keystore with
keytool -list.
Summary
Android Studio keystore creation errors are most commonly caused by folder permissions, invalid paths, existing files, passwords, aliases, JDK configuration, or keystore type.
Start by using a simple writable location such as:
C:\Users\User\AndroidKeys\release.jks
If Android Studio still cannot create the keystore, test the underlying Java tool directly:
keytool -genkeypair -v -keystore release.jks -alias release -keyalg RSA -keysize 2048 -validity 10000
Oracle’s current documentation states that -genkeypair generates a public/private key pair and stores the private key and certificate in an alias-identified keystore entry. :contentReference[oaicite:28]{index=28}
After creation, verify the file immediately:
keytool -list -v -keystore release.jks
Finally, Google strongly recommends protecting your keystore and private key and maintaining secure backups. :contentReference[oaicite:29]{index=29}
For a published application, never replace an existing signing key casually simply because a new keystore is difficult to create. Confirm the application’s existing signing configuration first.
