Android Studio 不会为调试构建的代码签名

标签 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 时,它会报告错误的 key 哈希。

我注意到signingConfigs

signingConfig signingConfigs.debug

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

所以我转到 UI 中的项目设置,删除签名以及构建和签名之间的关系,保存它,然后将其添加回去。同样的问题。

我确信这是我刚刚忽略的非常小的事情,或者谷歌在版本之间重命名了命令,无论如何。

有人可以帮忙吗?

最佳答案

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

关于Android Studio 不会为调试构建的代码签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28512684/

相关文章:

android - 背景色调

Android 网址覆盖不适用于重定向

android - 我可以在主线程上读取一个小的 txt 文件,还是应该始终避免那里的 I/O?

android - Robolectric NullPointerException 与 BugSense

java - 无法从存储中读取 key <key> ".../keystore.jks": Keystore was tampered with, 或密码不正确

android - 组装生产版本时在Gradle中设置常量值buildConfigField

android - 如何旋转或缩放ImageView的图像?

android - 错误 : select Android SDK

android - 如何从产品口味上控制 multiDex 和 minifying?

android - 获取 :app:processDebugResources while flutter run 的一些未知错误