Ошибка сборки Mac OS Flutter: неверный формат хранилища ключей
с недели я пытаюсь создать пакет приложений для Android из приложения flutter, и я следил за созданием хранилища ключей для загрузки с учетом официального веб-сайта flutter
в Mac OS я пробовал следующую команду в терминале
keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
мне было предложено ввести пароль хранилища ключей, который я написал, а затем повторно ввести новый пароль: после этой последовательности вопросов и ответов, которые я заполнил, как ваше имя и фамилия ?, Как называется ваше организационное подразделение ?, Как называется ваша организация ?, Как называется ваш город или населенный пункт?, Как называется ваш штат или провинция ?, Какой двухбуквенный код страны для этого подразделения? информация верна, на что я ответил "да", он создал файл .jks при таком запросе
Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,000 days
for: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
[Storing /Users/faizfareed/upload-keystore.jks]
после этого я создал файл с именем
[project]/android/key.properties
который содержит ссылку на хранилище ключей со следующей информацией в файле
storePassword=android
keyPassword=android
keyAlias=upload
storeFile=/Users/faizfareed/upload-keystore.jks
наконец-то я настроил градиент
[project]/android/app/build.gradle
файл.
Добавлена информация о хранилище ключей из файла свойств перед
android
блокировать:
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
...
}
Загрузил
key.properties
файл в
keystoreProperties
объект.
Заменил
buildTypes
блокировать:
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now,
// so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
С информацией о конфигурации подписи:
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
наконец, когда я казнил
flutter build appbundle
команда, выдает ошибку, подобную этой
faizfareed@Faizs-MBP building_apk % flutter build appbundle
Building without sound null safety
For more information see https://dart.dev/null-safety/unsound-null-safety
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:signReleaseBundle'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> Failed to read key upload from store "/Users/faizfareed/upload-keystore.jks": Invalid keystore format
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 7s
Running Gradle task 'bundleRelease'...
Running Gradle task 'bundleRelease'... Done 7.8s
Gradle task bundleRelease failed with exit code 1
для справки прилагаю изображение терминала
Я также пробовал следующее решение, но у меня ничего не работает
Может ли кто-нибудь помочь мне с этой ошибкой Invalid keystore formate
2 ответа
У меня точно такая же ошибка. Я установил JDK с https://docs.oracle.com/en/java/javase/15/install/installation-jdk-macos.html#GUID-2FE451B0-9572-4E38-A1A5-568B77B146DE, но в этом не было необходимости поскольку он есть в Android Studio, я удалил его.
Я использовал следующую команду в терминале
/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home/bin/keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
Я рекомендовал использовать команду
flutter doctor -v
чтобы проверить java-путь 'Java binary at:'введите описание изображения здесь
добавьте -storetype JKS к вашей команде хранилища ключей. После Java 8 это было необходимо, поскольку Java 8 уже поддерживает PKCS12, но это не формат по умолчанию. Если вы хотите использовать хранилище ключей PKCS12 с Java 8, вам нужно передать параметр «-storetype pkcs12» (см. docs.oracle.com/javase/8/docs/technotes/tools/unix/…) и stackoverflow.com/a. /11540061/5646962 –