未找到用于签署配置“发布”的密钥库。-- 反应原生
Posted
技术标签:
【中文标题】未找到用于签署配置“发布”的密钥库。-- 反应原生【英文标题】:keystore not found for signing config 'release'.-- React native 【发布时间】:2017-12-29 04:24:41 【问题描述】:我正在尝试为 react native 项目生成Signed APK
。
遵循 android 和 react-native 文档中的步骤。
我的Build.gradle
文件
android
compileSdkVersion 23
buildToolsVersion '26.0.2'
defaultConfig
applicationId "com.appmobile"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
ndk
abiFilters "armeabi-v7a", "x86"
signingConfigs
release
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE'))
storeFile file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
buildTypes
release
signingConfig signingConfigs.release
// minifyEnabled enableProguardInReleaseBuilds
// proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
splits
abi
reset()
enable enableSeparateBuildPerCPUArchitecture
universalApk false // If true, also generate a universal APK
include "armeabi-v7a", "x86"
// buildTypes
// release
// minifyEnabled enableProguardInReleaseBuilds
// proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
//
//
// applicationVariants are e.g. debug, release
applicationVariants.all variant ->
variant.outputs.each output ->
// For each separate APK per architecture, set a unique version code as described here:
// http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
def versionCodes = ["armeabi-v7a":1, "x86":2]
def abi = output.getFilter(OutputFile.ABI)
if (abi != null) // null for the universal-debug, universal-release variants
output.versionCodeOverride =
versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
我已将密钥库文件放在Android/app
目录中
我的grade.properties
android.useDeprecatedNdk=true
MYAPP_RELEASE_STORE_FILE=sampleReleasekeyStore.jks
MYAPP_RELEASE_KEY_ALIAS=*****
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
执行cd android && ./gradlew assembleRelease
时。
它的抛出构建失败
任务“:app:validateSigningRelease”执行失败。 未找到用于签署配置“发布”的密钥库文件 /Users/username/Projects/appMobile/android/app/sampleReleasekeyStore.jks。
我使用的是 Mac 环境。请让我知道我哪里出错了。
【问题讨论】:
你确定sampleReleasekeyStore.jks在android/app上吗? 是的。它在那里。@Tenten Ponce @KartiikeyaBaleneni 你解决了这个问题吗? 【参考方案1】:这种情况下的问题是路径。正如您上面已经提到的,在 app 文件夹中输入密钥。 然后在你的 .properties 中,不要命名整个路径,因为你已经在你的项目/应用程序中了。你只需要输入密钥的名称:
storePassword=my_password
keyPassword=my_password
keyAlias=key
storeFile=key.jks
【讨论】:
【参考方案2】:-
打开 Android Studio
将您的密钥库文件拖放到应用文件夹中
点击文件 -> 同步项目
【讨论】:
尝试了一切,这是唯一有效的方法。谢谢。 对我不起作用【参考方案3】:这对我有用!
-
https://facebook.github.io/react-native/docs/signed-apk-android.html
如图所示打开终端(库 -> Android -> ...)
keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
当前文件夹中的 xxxx.keystore。
【讨论】:
运行上述命令后,系统会要求您输入密码,要输入该密码,您应该查看 build.gradle 文件【参考方案4】:// 对于 Mac 用户 第 1 步命令。
keytool -genkey -v -keystore ~/ksk.jks -keyalg RSA -keysize 2048 -validity 10000 -alias ksk
//对于windows用户 第 1 步命令。
keytool -genkey -v -keystore C:/Users/USER_NAME/ksk.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias ksk
//注意:请在终端中运行上述命令。输入每个输入值,例如名字和姓氏、组织名称、密码、城市、国家代码等。
//第二步。适用于 Mac 和 Windows。创建文件key.properties“key”文件名和“properties”文件扩展名。
//注意:保存在你的项目android文件夹中。
//第三步。适用于 Mac 和 Windows // 编辑 key.properties 文件。在您创建 jks 文件时,使用终端中使用的适当值插入以下行。
storePassword=storepassword
keyPassword=password
keyAlias=ksk
storeFile=C:\\Users\\USER_NAME\\Desktop\\ksk.jks
//注意如果是Mac用户,storeFile应该是storeFile=/Users/USER_NAME/ksk.jks
// 第四步编辑 build.gradle 文件。在你的 defaultConfig 块之后复制粘贴以下两个块,替换现有的 builtTypes 时钟
signingConfigs
release
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
buildTypes
release
signingConfig signingConfigs.release
//第5步编辑build.gradle文件在android ...
之前添加以下块def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists())
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
//第六步运行命令
flutter Clean
//第7步运行命令。
flutter build appbundle --release
//如果是AS菜单
Build > Flutter > Build App Bundle
//现在它应该在项目目录中构建包
`build/app/output/bundle/release/app-release.aab`
//一切顺利。
【讨论】:
【参考方案5】:尝试从MYAPP_RELEASE_STORE_FILE
中删除.jks
,它对我有用。
MYAPP_RELEASE_STORE_FILE=sampleReleasekeyStore
【讨论】:
【参考方案6】:我注意到 Gradle 总是在 android/app 路径中寻找这个文件。 (可能是硬编码)
在你的情况下,将 sampleReleasekeyStore.jks 放在路径中;
/Users/username/Projects/appMobile/android/app/
提示:只需查看错误并将您的文件放在错误中指定的文件夹中。
【讨论】:
【参考方案7】:转到您的应用程序文件夹
cd 安卓 光盘应用程序
并使用此命令生成您的调试密钥
keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
用于发布 APK
keytool -genkey -v -keystore release.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
【讨论】:
keytool -genkey -v -keystore release.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000【参考方案8】:在我的情况下,当我尝试在 MacOS 上打开在 Windows 中创建的项目时触发了此错误。
即使将密钥库文件添加到应用程序文件夹,也会显示错误。
Android Studio 似乎完全忽略了 myProject/android/gradle.properties 文件
我必须如下设置本地~/.gradle/gradle.properties
文件
MYAPP_RELEASE_STORE_FILE=<file-release.keystore>
MYAPP_RELEASE_KEY_ALIAS=<key-alias>
MYAPP_RELEASE_STORE_PASSWORD=<password>
MYAPP_RELEASE_KEY_PASSWORD=<keyPassword>
【讨论】:
【参考方案9】:有时您可以同时使用'MYAPP_UPLOAD_STORE_FILE'
和'MYAPP_RELEASE_STORE_FILE'
。确保名称在 gradles.properties
和 build.gradle
之间匹配(对于所有属性)。
【讨论】:
【参考方案10】:在我的情况下,当没有 .jks 扩展名时,React Native 项目问题就来了。添加 .jks 扩展名解决了问题
MYAPP_UPLOAD_STORE_FILE=upload.keystore.jks
MYAPP_UPLOAD_KEY_ALIAS=upload
MYAPP_UPLOAD_STORE_PASSWORD=**
MYAPP_UPLOAD_KEY_PASSWORD=**
signingConfigs
release
if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE'))
storeFile file(MYAPP_UPLOAD_STORE_FILE)
storePassword MYAPP_UPLOAD_STORE_PASSWORD
keyAlias MYAPP_UPLOAD_KEY_ALIAS
keyPassword MYAPP_UPLOAD_KEY_PASSWORD
```
【讨论】:
【参考方案11】:在终端/命令提示符下键入以下命令:
keytool -genkey -v -keystore your_keystore_fileName.keystore -alias your_alias -keyalg RSA -keysize 2048 -validity 10000
输入提示的详细信息。
确保生成的文件在 android/app.如果没有,请将文件剪切并粘贴到android/app下。
在android/app下-> build.gradle:
signingConfigs
release
storeFile file('your_keystore_fileName.keystore')
storePassword 'password_that_you_set'
keyAlias 'Partnerkey0'
keyPassword 'password_that_you_set'
【讨论】:
【参考方案12】:只需将 rootProject.File 添加到 storeFile 即可访问密钥库。
if (project.hasProperty('MYAPP_RELEASE_STORE_FILE'))
storeFile rootProject.file(MYAPP_RELEASE_STORE_FILE)
storePassword MYAPP_RELEASE_STORE_PASSWORD
keyAlias MYAPP_RELEASE_KEY_ALIAS
keyPassword MYAPP_RELEASE_KEY_PASSWORD
【讨论】:
以上是关于未找到用于签署配置“发布”的密钥库。-- 反应原生的主要内容,如果未能解决你的问题,请参考以下文章
任务“:app:validateSigningRelease”执行失败。 > 密钥库文件未设置用于签署配置版本
VS Code/Flutter/Android - 密钥库文件未设置用于签署配置版本
Flutter:任务“:app:validateSigningRelease”执行失败。 > 密钥库文件未设置用于签署配置版本
sh 如何找出用于签署应用程序的密钥库? - 来源:http://stackoverflow.com/questions/11331469/how-do-i-find-out-which-keys