Android 构建签名 APK 时出错:keystore.jks 未找到签名配置 'externalOverride'
Android Error Building Signed APK: keystore.jks not found for signing config 'externalOverride'
我在尝试构建签名 APK 时遇到此错误。我最近升级到 API 23,但之后成功生成了 APK:s。我很困惑。寻求帮助并建议如何解决此问题。这是错误
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:validateExternalOverrideSigning'.
> Keystore file /Users/me/Desktop/final apps/keystore.jks not
found for signing config 'externalOverride'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --
debug option to get more log output.
和日志
Information:Gradle tasks [:app:assembleRelease]
:app:preBuild UP-TO-DATE
:app:preReleaseBuild UP-TO-DATE
:app:checkReleaseManifest
:app:preDebugBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72311Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42311Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAppindexing810Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBasement810Library UP-TO-DATE
:app:prepareReleaseDependencies
:app:compileReleaseAidl UP-TO-DATE
:app:compileReleaseRenderscript UP-TO-DATE
:app:generateReleaseBuildConfig UP-TO-DATE
:app:generateReleaseAssets UP-TO-DATE
:app:mergeReleaseAssets UP-TO-DATE
:app:generateReleaseResValues UP-TO-DATE
:app:generateReleaseResources UP-TO-DATE
:app:mergeReleaseResources UP-TO-DATE
:app:processReleaseManifest UP-TO-DATE
:app:processReleaseResources UP-TO-DATE
:app:generateReleaseSources UP-TO-DATE
:app:compileReleaseJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
:app:compileReleaseNdk UP-TO-DATE
:app:compileReleaseSources
:app:lintVitalRelease
:app:transformClassesWithDexForRelease
:app:mergeReleaseJniLibFolders
:app:transformNative_libsWithMergeJniLibsForRelease
:app:processReleaseJavaRes UP-TO-DATE
:app:transformResourcesWithMergeJavaResForRelease
:app:validateExternalOverrideSigning FAILED
Error:Execution failed for task ':app:validateExternalOverrideSigning'.
> Keystore file /Users/me/Desktop/final apps/keystore.jks not found for
signing config 'externalOverride'.
这是我的Gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.waffles.vatsandbats"
minSdkVersion 14
targetSdkVersion 23
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.txt'
}
}
}
dependencies {
compile files('libs/acra-4.7.0-javadoc.jar')
compile files('libs/acra-4.7.0-sources.jar')
compile files('libs/acra-4.7.0.jar')
compile 'com.google.android.gms:play-services-appindexing:8.1.0'
compile files('libs/activation.jar')
compile files('libs/mail.jar')
compile files('libs/additionnal.jar')
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:appcompat-v7:23.1.1'
}
我找到了解决方案。我放错了 keystore.jks
文件的路径。
使用该路径在我的计算机上搜索文件,一切正常。
生成 .jks 文件时,如果写下 "filename" 而不是路径,可能会出现此问题。生成一个新的,放在桌面(或任何其他真实路径)并重新生成APK。
文件 -> 使缓存无效并重新启动...
构建 -> 构建签名的 APK -> 检查对话框中的路径
我有同样的问题,因为我没有密钥库路径然后我看到 解决方案并且遇到了一个新问题在我的 Android Studio 3.1 for mac 中有一个 windows 尝试创建新的 keystore 路径 时出现对话框问题,就像这样
如果你有同样的问题,不要担心黑色 windows 它只是输入你的新密钥库然后保存。
打开 key.properties 并检查您的路径是否正确。 (将 \ 替换为 /)
示例:-
替换自
"storeFile=D:\Projects\Flutter\Key\key.jks"
至
"storeFile=D:/Projects/Flutter/Key/key.jks"
对于上面尝试过的人,请尝试使用 -keypass 和 -storepass 选项生成密钥,因为我只输入了一个运行 时的密码,就像 React Native 文档一样。这导致它在尝试构建时出错。
keytool -keypass PASSWORD1 -storepass PASSWORD2 -genkeypair -v -keystore release2.keystore -alias release2 -keyalg RSA -keysize 2048 -validity 10000
TL;DR: 检查 keystore.jks
文件.
的路径
就我而言,情况如下:
我将整个应用程序的项目文件夹移到了我电脑上的另一个位置。很久以后,我想生成一个签名的 apk 文件。 我不知道,我的 keystore.jks
路径的默认位置已重置为错误的位置,我点击了确定。 因为它无法在路径中找到密钥库我选择了,我得到了那个错误。
解决方案是检查我的 keystore.jks
文件的路径是否正确。
点击选择现有并再次选择您的jks文件所在的位置。
希望这个技巧对你有用。
在Linux或Ubuntu上您需要使用完整路径。
例如
/home/ubuntu/.android/keystorname.keystore
在我的例子中,我使用的是 ~
而不是 /home/user/
。使用像下面这样的简写是行不通的
~/.android/keystorname.keystore
./keystorename.keystore
编辑密钥库文件的路径解决了我的问题。
我有一个现有的 jks file
,我已将其放在我的桌面上。
在对话框中我选择了选择现有并使用拖放将jks file
拖放到对话框中这张图片。
然后自动确定路径,而不必导航到 jks file
位置
文件路径是我的罪魁祸首
在 app/build.gradle
中更改了文件路径
storeFile file('upload-keystore.jks')
在我的例子中,我创建了一个 release 构建,JKS 被放置在 buildTypes.gradle
signingConfigs {
release {
storeFilefile('<Project Path>')
}
}
我在尝试构建签名 APK 时遇到此错误。我最近升级到 API 23,但之后成功生成了 APK:s。我很困惑。寻求帮助并建议如何解决此问题。这是错误
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:validateExternalOverrideSigning'.
> Keystore file /Users/me/Desktop/final apps/keystore.jks not
found for signing config 'externalOverride'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --
debug option to get more log output.
和日志
Information:Gradle tasks [:app:assembleRelease]
:app:preBuild UP-TO-DATE
:app:preReleaseBuild UP-TO-DATE
:app:checkReleaseManifest
:app:preDebugBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72311Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42311Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesAppindexing810Library UP-TO-DATE
:app:prepareComGoogleAndroidGmsPlayServicesBasement810Library UP-TO-DATE
:app:prepareReleaseDependencies
:app:compileReleaseAidl UP-TO-DATE
:app:compileReleaseRenderscript UP-TO-DATE
:app:generateReleaseBuildConfig UP-TO-DATE
:app:generateReleaseAssets UP-TO-DATE
:app:mergeReleaseAssets UP-TO-DATE
:app:generateReleaseResValues UP-TO-DATE
:app:generateReleaseResources UP-TO-DATE
:app:mergeReleaseResources UP-TO-DATE
:app:processReleaseManifest UP-TO-DATE
:app:processReleaseResources UP-TO-DATE
:app:generateReleaseSources UP-TO-DATE
:app:compileReleaseJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
:app:compileReleaseNdk UP-TO-DATE
:app:compileReleaseSources
:app:lintVitalRelease
:app:transformClassesWithDexForRelease
:app:mergeReleaseJniLibFolders
:app:transformNative_libsWithMergeJniLibsForRelease
:app:processReleaseJavaRes UP-TO-DATE
:app:transformResourcesWithMergeJavaResForRelease
:app:validateExternalOverrideSigning FAILED
Error:Execution failed for task ':app:validateExternalOverrideSigning'.
> Keystore file /Users/me/Desktop/final apps/keystore.jks not found for
signing config 'externalOverride'.
这是我的Gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "com.waffles.vatsandbats"
minSdkVersion 14
targetSdkVersion 23
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.txt'
}
}
}
dependencies {
compile files('libs/acra-4.7.0-javadoc.jar')
compile files('libs/acra-4.7.0-sources.jar')
compile files('libs/acra-4.7.0.jar')
compile 'com.google.android.gms:play-services-appindexing:8.1.0'
compile files('libs/activation.jar')
compile files('libs/mail.jar')
compile files('libs/additionnal.jar')
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:appcompat-v7:23.1.1'
}
我找到了解决方案。我放错了 keystore.jks
文件的路径。
使用该路径在我的计算机上搜索文件,一切正常。
生成 .jks 文件时,如果写下 "filename" 而不是路径,可能会出现此问题。生成一个新的,放在桌面(或任何其他真实路径)并重新生成APK。
文件 -> 使缓存无效并重新启动...
构建 -> 构建签名的 APK -> 检查对话框中的路径
我有同样的问题,因为我没有密钥库路径然后我看到
如果你有同样的问题,不要担心黑色 windows 它只是输入你的新密钥库然后保存。
打开 key.properties 并检查您的路径是否正确。 (将 \ 替换为 /)
示例:-
替换自 "storeFile=D:\Projects\Flutter\Key\key.jks" 至 "storeFile=D:/Projects/Flutter/Key/key.jks"
对于上面尝试过的人,请尝试使用 -keypass 和 -storepass 选项生成密钥,因为我只输入了一个运行 时的密码,就像 React Native 文档一样。这导致它在尝试构建时出错。
keytool -keypass PASSWORD1 -storepass PASSWORD2 -genkeypair -v -keystore release2.keystore -alias release2 -keyalg RSA -keysize 2048 -validity 10000
TL;DR: 检查 keystore.jks
文件.
就我而言,情况如下:
我将整个应用程序的项目文件夹移到了我电脑上的另一个位置。很久以后,我想生成一个签名的 apk 文件。 我不知道,我的 keystore.jks
路径的默认位置已重置为错误的位置,我点击了确定。 因为它无法在路径中找到密钥库我选择了,我得到了那个错误。
解决方案是检查我的 keystore.jks
文件的路径是否正确。
点击选择现有并再次选择您的jks文件所在的位置。
希望这个技巧对你有用。
在Linux或Ubuntu上您需要使用完整路径。
例如
/home/ubuntu/.android/keystorname.keystore
在我的例子中,我使用的是 ~
而不是 /home/user/
。使用像下面这样的简写是行不通的
~/.android/keystorname.keystore
./keystorename.keystore
编辑密钥库文件的路径解决了我的问题。
我有一个现有的 jks file
,我已将其放在我的桌面上。
在对话框中我选择了选择现有并使用拖放将jks file
拖放到对话框中这张图片。
然后自动确定路径,而不必导航到 jks file
位置
文件路径是我的罪魁祸首
在 app/build.gradle
storeFile file('upload-keystore.jks')
在我的例子中,我创建了一个 release 构建,JKS 被放置在 buildTypes.gradle
signingConfigs {
release {
storeFilefile('<Project Path>')
}
}