Android Studio 没有为调试版本签署代码
Android Studio does not sign the code for debug build
Android Studio 拒绝签署我的调试版本代码。
我有一个较旧的项目,在 build.gradle 中没有任何签名说明,所以我根据此 Android gradle signingConfig error 和其他帖子添加了这些。
我的 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 file('../../../.android/debug.keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
可以找到storeFile,因为我更改路径时出现编译错误。当路径正确时,它会编译,但是当我尝试在我的应用程序中使用 Facebook SDK 时,它会报告错误的密钥哈希。
我注意到 signingConfigs
signingConfig signingConfigs.debug
下划线显示错误信息 "Cannot infer argument types..."
所以我转到 UI 中的项目设置,删除签名以及构建和签名之间的关系,保存它,然后将其添加回来。同样的问题。
我确定这是我刚刚忽略的非常小的事情,或者 Google 重命名了版本之间的命令,无论如何。
有人可以帮忙吗?
这里有几件事,假设您的 debug.keystore
是 ~/.android
文件夹中的那个。
改变这个:
debug {
storeFile file('../../../.android/debug.keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
至此(将debug.keystore
存入根项目):
debug {
storeFile rootProject.file('debug.keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
你不需要覆盖 debug
BuildType
,它自然地用 debug
键签名,所以你可以删除:
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
}
}
为新 gradle experimental plugin 添加一个答案,因为语法不同:
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
块之外。
Android Studio 拒绝签署我的调试版本代码。
我有一个较旧的项目,在 build.gradle 中没有任何签名说明,所以我根据此 Android gradle signingConfig error 和其他帖子添加了这些。
我的 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 file('../../../.android/debug.keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
}
buildTypes {
debug {
signingConfig signingConfigs.debug
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
productFlavors {
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
可以找到storeFile,因为我更改路径时出现编译错误。当路径正确时,它会编译,但是当我尝试在我的应用程序中使用 Facebook SDK 时,它会报告错误的密钥哈希。
我注意到 signingConfigs
signingConfig signingConfigs.debug
下划线显示错误信息 "Cannot infer argument types..."
所以我转到 UI 中的项目设置,删除签名以及构建和签名之间的关系,保存它,然后将其添加回来。同样的问题。
我确定这是我刚刚忽略的非常小的事情,或者 Google 重命名了版本之间的命令,无论如何。
有人可以帮忙吗?
这里有几件事,假设您的 debug.keystore
是 ~/.android
文件夹中的那个。
改变这个:
debug {
storeFile file('../../../.android/debug.keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
至此(将debug.keystore
存入根项目):
debug {
storeFile rootProject.file('debug.keystore')
keyAlias 'androiddebugkey'
keyPassword 'android'
storePassword 'android'
}
你不需要覆盖 debug
BuildType
,它自然地用 debug
键签名,所以你可以删除:
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
}
}
为新 gradle experimental plugin 添加一个答案,因为语法不同:
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
块之外。