Android-студия Обновление пакета jarsigner: ключ, связанный с key0, не закрытый ключ

Вот шаги, которые я предпринимаю в указанном порядке, чтобы обновить опубликованное приложение после исправления ошибки через Android studio:

  1. Исправьте ошибку.

  2. Изменен на versionCode 2 и versionName "1.1" в build.gradle (Модуль)

  3. Создать подписанный пакет

  4. Путь к хранилищу ключей: C:\Folder\Folder\Android\MyApp.jks

  5. Оба пароля верны

  6. Псевдоним ключа: key0 (по умолчанию, как в первый раз)

Но тогда возникает эта ошибка:

Cause: jarsigner.exefailed with exit code 1 :
jarsigner: key associated with key0 not a private key

Что может быть причиной этого?

Ответ 1

"Построить" → "Очистить проект", затем снова "Сгенерировать подписанный..." - у меня сработало нормально

Ответ 2

Ну, я также столкнулся с этой проблемой после обновления до Android Studio 3.3, и я решил в 3 шага. Но сначала убедитесь, что вы сделали резервную копию всего проекта.

  1. В Android Studio выберите "Файл"> "Структура проекта" и снимите флажок "использовать встроенный JDK", затем нажмите "ОК".
  2. Перейдите в " Настройки компьютера" (настройки системы) (клавиша win + pause), затем перейдите в " Расширенные настройки системы"> "Переменные среды". если JAVA_HOME отсутствует, добавьте его и укажите путь к установленному JDK. Так как я не смог найти прямой подход к изменению пути jdk в моем проекте, который каким-то образом обновлен до настроек Android Studio 3.3, я выполнил следующее (для последнего шага), НО УБЕДИТЕСЬ, ЧТО ВЫ ДЕЛАЕТЕ РЕЗЕРВНОЕ КОПИРОВАНИЕ ДО ЭТОГО.
  3. Чтобы удостовериться, куда я направляюсь, чтобы перейти к представлению проекта, я удалил папки ".grade", ".idea", "capture", "gradle" из корня и папку "build", "release", "lib" из " Приложение "оставив" SRC ", как оно есть. Удалил root.iml и не удалил файл app.iml Затем пересоберите проект и затем создайте подписанный пакет.

Это прошло успешно после 2 попыток. Честно говоря, я сделал последний шаг дважды, восстановив файлы из резервной копии. Как удаление этих папок я испортил 1 раз.

Ответ 3

Кажется, вы вводите неправильный пароль, если

"Строй"> "Чистый проект"

не решил твою проблему.

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

Ответ 4

Для тех, кому не повезло с "Чистым проектом", попробуйте изменить пароль ключа с помощью следующей команды в Android Studio Terminal.

keytool -keypasswd -alias yourAliasName -keystore pathToYourKeystoreFile 

После этого вам будет предложено ввести пароль хранилища ключей и, если он верен, можете изменить пароль ключа.

У меня была та же проблема, у меня есть оба пароля, написанные на листе бумаги, и внезапно (обновление Android Studio?) Пароль ключа больше не работал. Keystore работал, мог выбрать псевдоним, но при создании подписанного приложения та же ошибка, что и у вас.

Ответ 5

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

В конце концов, просто перезагрузка моего компьютера - вот что помогло.

Ответ 6

Специальные символы в вашем пароле? Читайте на

(Не уверен на 100%, но) В моем ключевом пароле были специальные символы, и я решил удалить все двойные кавычки (") только потому, что он мог быть виновником, и это сработало.

Ответ 7

Для тех, кто придет на этот вопрос, создать кандидат на выпуск приложения React Native для Play Store или в случае сборки без Android Studio.

а) Очистка проекта особенно полезна, если в вашей продакшен версии были предыдущие ошибки:

cd android
./gradlew clean


b) Проверьте, правильно ли было создано ваше хранилище ключей, с действующим, экспортируемым сертификатом, встроенным в:

keytool -export -alias your-keystore-alias -file mycertificate.crt -keystore /path/to/keystore 

Вам будет предложено ввести пароль хранилища ключей, который вы использовали при создании хранилища ключей. Если вы успешно создали файл mycertificate.crt, с вашим хранилищем ключей все в порядке. Это действительно.


c) Ошибка not a private key также может появиться, если вы явно не указали пароль ключа и просто пароль хранилища (как показано ниже) в свойствах сборки своего выпуска gdle:

MYAPP_UPLOAD_STORE_FILE=my-app.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-app
MYAPP_UPLOAD_STORE_PASSWORD=keystorePassword
MYAPP_UPLOAD_KEY_PASSWORD=

При генерации сертификата подписи с помощью keytool есть необязательный аргумент для генерации отдельного пароля сертификата, помимо пароля хранилища ключей. Однако если пароль сертификата/ключа не указан, он наследует пароль хранилища ключей. Таким образом, в этом случае рабочий набор свойств будет:

MYAPP_UPLOAD_STORE_FILE=my-app.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-app
MYAPP_UPLOAD_STORE_PASSWORD=keystorePassword
MYAPP_UPLOAD_KEY_PASSWORD=keystorePassword

Ответ 8

это просто означает, что вы ввели неправильный ключ, позвольте мне объяснить

  1. Ваш пароль для хранилища ключей правильный
  2. Ваш пароль для Ключ неправильный