Android Studio不会为调试版本签署代码

时间:2015-02-14 05:16:42

标签: android android-studio gradle code-signing

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

带有错误消息的下划线"无法推断参数类型..."

所以我去了用户界面中的项目设置,删除了签名以及构建和签名之间的关系,保存了这个,并将其添加回来。同样的问题。

我确信这是一个非常小的东西,我只是忽略了,或谷歌重命名版本之间的命令,无论如何。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:16)

这里有几件事,假设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 } }

{{1}}

答案 1 :(得分:0)

为新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块之外。