У меня возникли проблемы с получением сертификата SHA1 с помощью keytool

Я пытаюсь найти хэш SHA1 моего хранилища ключей подписи на macos sierra, используя следующую команду:

keytool -exportcert -alias androiddebugkey -keystore $HOME/.android/debug.keystore -list -v -storepass android

Результат выглядит следующим образом:

Имя псевдонима: androiddebugkey
Дата создания: 25 октября 2017 г.
Тип ввода: PrivateKeyEntry
Длина цепочки сертификатов: 1
Сертификат [1]: ошибка ключа keytool: java.util.IllegalFormatConversionException: d!= java.lang.String java.util.IllegalFormatConversionException: d!= java.lang.String at java.base/java.util.Formatter $FormatSpecifier.failConversion(Formatter.java:4331)   в java.base/java.util.Formatter $FormatSpecifier.printInteger(Formatter.java:2846)   в java.base/java.util.Formatter $FormatSpecifier.print(Formatter.java:2800)   в java.base/java.util.Formatter.format(Formatter.java:2581) в java.base/java.util.Formatter.format(Formatter.java:2517) в java.base/java.lang.String.format(String.java:2747) в java.base/sun.security.tools.keytool.Main.withWeak(Main.java:3151) at java.base/sun.security.tools.keytool.Main.printX509Cert (Main.java:3182)   в java.base/sun.security.tools.keytool.Main.doPrintEntry(Main.java:1995)   в java.base/sun.security.tools.keytool.Main.doCommands(Main.java:1212)   в java.base/sun.security.tools.keytool.Main.run(Main.java:397) в java.base/sun.security.tools.keytool.Main.main(Main.java:390)

Насколько я могу видеть, что команда работает, это не проблема с файлом и с паролем, мне кажется, внутренняя ошибка в java, не хватает ли какого-либо пакета java? Я использую Java SDK 9.0.1

Ответ 1

Я обнаружил, что проблема связана с последней версией Keytool в JDK8.151 и JDK9. По умолчанию keytool используйте системный язык по умолчанию и, похоже, не работают должным образом на некоторых языках (в моем случае на французском языке).

Достаточно было принудительно выводить на английский язык с помощью параметра -J-Duser.language=en

Поэтому попробуйте использовать эту командную строку вместо:

keytool -J-Duser.language=en -exportcert -alias androiddebugkey -keystore $HOME/.android/debug.keystore -list -v -storepass android

См. также мой ответ здесь: fooobar.com/info/561552/...