Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

apksigner - Invalid keystore format

As described in https://developer.android.com/studio/publish/app-signing#signing-manually I try to sign an app in git bash on windows 7.

I generate a keystore with keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias this should use the default keystore type which should be fine.

Then I run zipalign zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk which gives "Verification succesful" (with one s)

and finally I run apksigner which gives me the error:

"C:\....\apksigner.bat" sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk
Keystore password for signer #1:
123456
Failed to load signer "signer #1"
java.io.IOException: Invalid keystore format
        at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:658)
        at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56)
        at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224)
        at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70)
        at java.security.KeyStore.load(KeyStore.java:1445)
        at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCertsFromKeyStore(ApkSignerTool.java:613)
        at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCerts(ApkSignerTool.java:555)
        at com.android.apksigner.ApkSignerTool$SignerParams.access$200(ApkSignerTool.java:509)
        at com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:215)
        at com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:89)

I also tried different storetypes like pkcs12 which is not supported at all (gives: java.io.IOException: parseAlgParameters failed: PBE AlgorithmParameters not available)

So my question is how to find out the right storetype? I din't find anything about this in the help nor the internet.

like image 890
Fritz Avatar asked Nov 18 '25 02:11

Fritz


1 Answers

This issue might happen if you generate keystore with newer JDK and then verify it with an older JDK. In my case: I generated keystore with java 16 and built app with App Center which verifies on java 8 (I think).

Try to find out where your keytool comes from (which keytool on Linux, Get-Command keytool in Powershell).

like image 172
Samuel Avatar answered Nov 20 '25 18:11

Samuel



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!