web-dev-qa-db-fra.com

Erreur lors de l'exécution de l'outil de signature d'application PEPK sur la ligne de commande (Java -jar pepk.jar)

J'obtiens la sortie:

Erreur: null

à partir de la commande (exécutée sur la ligne de commande):

Java -jar pepk.jar --keystore = my.keystore --alias = x --output = my.output --encryptionkey = 1243

Quelqu'un sait-il pourquoi ou comment le résoudre?

Le fichier "my.keystore" existe et est un fichier de clés. L'alias est correct et le fichier "my.output" n'existe pas. J'ai changé la valeur de la clé de chiffrement dans l'exemple ci-dessus mais peu importe les valeurs que j'utilise, j'obtiens toujours la même sortie.

J'ai essayé de citer deux fois les valeurs de fichier de clés et de sortie et de fournir (avec des guillemets) des chemins d'accès complets au fichier de clés et au fichier de sortie. Toujours la même sortie d'erreur. Le bocal est en cours d'exécution car je reçois l'aide à l'utilisation affichée s'il manque quelque chose. J'ai également essayé d'exécuter la commande dans différents répertoires et de m'assurer que les autorisations dans le répertoire de sortie sont correctes.

J'utilise Java:

Java version "9" Java (TM) SE Runtime Environment (build 9 + 181) Java HotSpot (TM) 64-Bit Server VM (build 9+) 181, mode mixte)

sur Windows 10. (J'ai essayé des chemins avec/et). Le pepk.jar a été téléchargé le même jour que cette question a été publiée sur la page de signature d'application sur le Play Store de mon application.

Mise à jour, avec nouvelle version téléchargée à partir du 17/Sep/2018:

Après avoir téléchargé la nouvelle version de pepk.jar comme l'a suggéré Pierre, la sortie est maintenant:

Error: Unable to export or encrypt the private key
Java.lang.NullPointerException
at com.google.wireless.Android.vending.developer.signing.tools.extern.export.KeystoreHelper.loadKeystore(KeystoreHelper.Java:45)
at com.google.wireless.Android.vending.developer.signing.tools.extern.export.KeystoreHelper.getPrivateKey(KeystoreHelper.Java:38)
at com.google.wireless.Android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.run(ExportEncryptedPrivateKeyTool.Java:114)
at com.google.wireless.Android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.main(ExportEncryptedPrivateKeyTool.Java:79)

J'ai vérifié le magasin de clés et il contient une clé privée, via l'utilisation de keytool -list -v -keystore.

9
Gary Bentley

J'ai finalement réussi à contourner ce problème en utilisant l'invite de commande standard de Windows (10), c'est-à-dire "cmd". Il semble que System.getConsole renvoie une valeur non nulle pour cmd.

Je n'ai pas pu trouver d'informations sur ce qui se passe avec mingw64 (l'invite de commande que j'utilise généralement sous Windows) et pourquoi le System.getConsole n'est pas en cours de configuration.

6
Gary Bentley

Eu le même problème lors de son essai sur Windows 10 avec gitbash/mingw64. Avec Powershell, cela fonctionnait comme un charme.

2
Martin Eckleben

Le mot de passe du magasin de clés et la clé sont demandés sur la ligne de commande.

Le problème semble être que votre Java n'a pas de console disponible, c'est-à-dire que System.console() renvoie null.

Si vous êtes en mesure de me faire savoir ce qui fait que votre environnement Java fait cela, alors nous pouvons essayer de trouver une solution pour votre cas d'utilisation.

1
Pierre