Android Studio未签署调试生成的代码
Android Studio拒绝签署我的调试生成代码 我有一个旧项目,在build.gradle中没有任何签名说明,所以我根据本文和其他帖子添加了这些说明 模块级(唯一的模块)上的build.gradle文件如下所示(摘录): 可以找到storeFile,因为当我更改路径时,会出现编译错误。当路径正确时,它会编译,但当我尝试在我的应用程序中使用Facebook SDK时,它会报告错误的密钥散列 我注意到,签名配置Android Studio未签署调试生成的代码,android,android-studio,gradle,code-signing,Android,Android Studio,Gradle,Code Signing,Android Studio拒绝签署我的调试生成代码 我有一个旧项目,在build.gradle中没有任何签名说明,所以我根据本文和其他帖子添加了这些说明 模块级(唯一的模块)上的build.gradle文件如下所示(摘录): 可以找到storeFile,因为当我更改路径时,会出现编译错误。当路径正确时,它会编译,但当我尝试在我的应用程序中使用Facebook SDK时,它会报告错误的密钥散列 我注意到,签名配置 signingConfig signingConfigs.debug 带下划线,
signingConfig signingConfigs.debug
带下划线,并显示错误消息“无法推断参数类型…”
因此,我转到UI中的项目设置,删除了签名以及构建和签名之间的关系,保存了这个,然后又重新添加了它。同样的问题
我确信这是我刚刚忽略的一个非常小的东西,或者谷歌在不同版本之间重命名了这个命令,不管怎样
有人能帮忙吗?这里有几件事,假设您的
debug.keystore
是来自~/.android
文件夹的
更改此项:
debug {
storeFile file('../../../.android/debug.keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
为此(将debug.keystore
存储在根项目中):
您不需要覆盖调试
构建类型
,它自然会以调试
键进行签名,因此您可以删除:
debug {
signingConfig signingConfigs.debug
}
最终的build.gradle
:
android {
compileSdkVersion 21
buildToolsVersion '21.1.2'
defaultConfig {
applicationId "cc.appname.android"
minSdkVersion 11
targetSdkVersion 21
versionCode 1
versionName '1.0'
}
signingConfigs {
debug {
storeFile rootProject.file('debug.keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
由于语法不同,因此添加新的答案:
model {
android {
buildTypes {
release {
signingConfig = $("android.signingConfigs.myConfig")
...
}
}
}
android.signingConfigs {
create("myConfig") {
keyAlias = 'androiddebugkey'
keyPassword = 'android'
storeFile = new File("${System.properties['user.home']}/.android/debug.keystore")
storePassword = 'android'
storeType = "jks"
}
}
}
注意:
android.signingConfigs
块必须放置在android
块之外 谢谢你,贾里德,现在就可以签字了。有趣的是,当我转到UI时,它添加了错误的signingConfig signingConfigs.debug
本身。我相信这不是一个bug就是缺少依赖项。至少它现在可以工作了。关于rootProject.file('debug.keystore')
-谢谢你的提示,但是相对路径仍然从项目根开始。由于调试密钥库位于路径的更高位置,因此我仍然需要将rootProject.file('../../.android/debug.keystore')
放回cd。因此,要么调试密钥库位于错误的位置(不在项目根目录中),要么这是出于构建系统的目的和惯例,但根本不需要从build.gradle中引用它还有。@CliveJefferies那是因为你把它放在了几个目录中。@JaredBurrows我没有把钥匙放在任何地方;)
android {
compileSdkVersion 21
buildToolsVersion '21.1.2'
defaultConfig {
applicationId "cc.appname.android"
minSdkVersion 11
targetSdkVersion 21
versionCode 1
versionName '1.0'
}
signingConfigs {
debug {
storeFile rootProject.file('debug.keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
model {
android {
buildTypes {
release {
signingConfig = $("android.signingConfigs.myConfig")
...
}
}
}
android.signingConfigs {
create("myConfig") {
keyAlias = 'androiddebugkey'
keyPassword = 'android'
storeFile = new File("${System.properties['user.home']}/.android/debug.keystore")
storePassword = 'android'
storeType = "jks"
}
}
}