Ошибка запуска инструмента подписи приложения PEPK в командной строке (java -jar pepk.jar) - PullRequest
0 голосов
/ 11 сентября 2018

Я получаю вывод:

Ошибка: ноль

из команды (выполняется в командной строке):

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

Кто-нибудь есть идеи, почему или как ее решить?

Файл "my.keystore" существует и является хранилищем ключей.Псевдоним правильный, а файл "my.output" не существует.Я изменил значение ключа шифрования в приведенном выше примере, но независимо от того, какие значения я использую, я всегда получаю один и тот же вывод.

Я пробовал дважды заключать в кавычки хранилище ключей и выходные значения и предоставлять (с кавычками) полные пути кфайл хранилища ключей и выходной файл.Все та же ошибка вывода.Jar выполняется, потому что я получаю справку по использованию, если что-то отсутствует.Я также попытался запустить команду в разных каталогах и убедился, что разрешения в выходном каталоге правильные.

Я использую версию Java:

версия Java "9"Java (TM) SE Runtime Environment (сборка 9 + 181) Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 9 + 181, смешанный режим)

в Windows 10. (Я пробовалдорожки с обоими / и).Файл pepk.jar был загружен в тот же день, когда этот вопрос был опубликован на странице подписи приложений в Play Store для моего приложения.

Обновление, с новой версией, загруженной по состоянию на 17 сентября 2018 года:

После загрузки новой версии pepk.jar в соответствии с предложением Пьера, вывод:

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)

Я дважды проверил хранилище ключей, и он содержит закрытый ключ, используя keytool -list -v -keystore.

Ответы [ 4 ]

0 голосов
/ 17 декабря 2018

Была такая же проблема при попытке его на Windows 10 с gitbash / mingw64. С Powershell это работает как шарм.

0 голосов
/ 17 сентября 2018

Пароль для хранилища ключей и ключ запрашиваются в командной строке.

Похоже, проблема в том, что в вашей среде Java нет консоли, т. Е. System.console() возвращает ноль.

Если вы сможете сообщить мне, что именно делает ваша среда Java, то мы можем попытаться найти решение для вашего варианта использования.

0 голосов
/ 15 октября 2018

Я наконец-то обошел эту проблему, используя стандартную командную строку Windows (10), то есть «cmd».Кажется, что System.getConsole возвращает ненулевое значение для cmd.

Я не смог найти никакой информации о том, что происходит с mingw64 (командная строка, которую я обычно использую в Windows) и почемуSystem.getConsole не настраивается.

0 голосов
/ 13 сентября 2018

У вас есть по крайней мере Java версии 8 (JDK 1.8) для запуска синтаксиса:

java -jar PATH_TO_PEPK --keystore = PATH_TO_KEYSTORE --alias = ALIAS_YOU_USE_TO_SIGN_APK --output = PATH_TO_OencUTGOOGLE_ENCRYPTION_KEY

Легенда:

  • PATH_TO_PEPK = Путь к скачанному файлу pepk.jar может быть примерно таким: C: \ Users \YourName \ Downloads \ pepk.jar для пользователей Windows.
  • PATH_TO_KEYSTORE = Путь к хранилищу ключей, который вы используете для подписи вашего релиза APK.Может быть файл типа *.keystore или *.jks или без расширения.Что-то вроде C: \ Android \ mykeystore или C: \ Android \ mykeystore.keystore .
  • ALIAS_YOU_USE_TO_SIGN_APK = Имя псевдонима, который выиспользуйте для подписания релиза APK.
  • PATH_TO_OUTPUT_FILE = Путь к выходному файлу с расширением .pem, что-то вроде C: \ Android \ private_key.pem
  • GOOGLE_ENCRYPTION_KEY = Этот ключ шифрования должен быть всегда одинаковым.Вы можете найти его на странице подписи приложений, скопировать и вставить его.Должно быть в такой форме: eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

Пример:

java -jar "C:\Users\YourName\Downloads\pepk.jar"
--keystore="C:\Android\mykeystore" --alias=myalias --output="C:\Android\private_key.pem" --encryptionkey=eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

После ввода команды в терминале, вам необходимо будет предоставить следующее:

  1. Пароль хранилища ключей
  2. Пароль псевдонима

Если все прошло хорошо, теперь у вас будет файл в папке PATH_TO_OUTPUT_FILE с именем private_key.pem.

Дополнительные ресурсы:

...