安装失败,因为APK没有签名。

3

我刚将我的Android Studio从1.5升级到2.2,现在运行我的应用程序时出现以下错误:

安装失败,因为APK未签名或签名不正确。如果这是一个基于Gradle的项目,请确保签名配置已在Gradle构建脚本中指定。

我已经搜索了谷歌,但没有任何解决办法适用于我,我的gradle文件如下:

...
android {
    signingConfigs {
        myapp_signed {
            keyAlias 'mkey'
            keyPassword 'pwd'
            storeFile file('.../_keystore.jks')
            storePassword 'pwd'
        }
    }
    compileSdkVersion 22
    buildToolsVersion "21.1.2"
    defaultConfig {
        applicationId '...'
        minSdkVersion 14
        targetSdkVersion 22
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.myapp_signed
        }
    }
    productFlavors {
    }
}
...

有人知道如何解决这个问题吗?就在我遇到这个错误之前,我还遇到了另一个错误,它是这样说的:


警告:需要Gradle版本2.10。当前版本为2.2。如果使用Gradle包装器,请尝试编辑C:\ Users \ blahblah \ myproject \ gradle \ wrapper \ gradle-wrapper.properties中的distributionUrl为gradle-2.10- all.zip


我像这样解决它:“需要Gradle版本2.10”错误

编辑:
即使我将构建变体切换回调试模式,卸载应用程序并再次尝试,我仍然会收到相同的错误。

你在文件路径中使用了“...”吗?还是那只是为了隐藏个人信息? - Cory Roy
1
这只是为了隐藏个人信息:D - Luca Thiede
可能是重复问题: https://dev59.com/el4b5IYBdhLWcg3woS68 - Milon
6个回答

2

对于我来说,解决方案是更新我使用的所有库并升级到Android 23。也许这可以帮助其他人。


1
默认情况下,Android Studio 2.2和Gradle 2.2的Android插件使用签名方案v2来签署您的应用。向signingConfigs中添加v2SigningEnabled false可能会解决您的问题。
signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }

参考 https://developer.android.com/preview/api-overview.html#apk_signature_v2


错误信息中没有任何提示表明这与APK签名方案v2有任何关系。 - Alex Klyubin

0

如果你在调试模式下仍然遇到这个错误,那就将项目进行一次清理并再次运行。这对我很有效。

附言:我使用的是Android 2.2 Beta版。


0
你尝试生成新的密钥库来使用了吗? 在我的情况下,我将 Gradle Build Tools 从 1.5.0 升级到 2.1.0 后,我的旧密钥库文件不再起作用。 当我尝试它时,这让我感到惊讶...

是的,我创建了一个新的密钥库,但它仍然无法正常工作。而且即使在调试模式下也无法运行,Android Studio使用默认的密钥库,如果这个密钥库损坏了,我的其他应用程序也不应该能正常工作,对吧? - Luca Thiede

0

显然,问题出在将Gradle降级到2.1.0版本上。

    classpath 'com.android.tools.build:gradle:2.1.0'

0

仅供参考,我的签名配置看起来像这样 - 不是我的真实密码:

 signingConfigs {
    release {
        storeFile file("keystore/release.jks")
        keyAlias "release"
        storePassword "storepass"
        keyPassword "keypass
    }

    debug {
        storeFile file("keystore/debug.jks")
        keyAlias "androiddebugkey"
        storePassword "android"
        keyPassword "android"
    }
}

 buildTypes {
    release {
        minifyEnabled true
        zipAlignEnabled true
        signingConfig signingConfigs.release
    }

    debug {
        minifyEnabled true
        zipAlignEnabled true
        signingConfig signingConfigs.debug
    }
}

只是忘记遮盖一些更个人的信息:D Gradle 是由 Android Studio 自动生成的,我会像你一样尝试它。 - Luca Thiede
1
@LucaThiede,好的,我更新了我的答案,删除了不匹配的签名配置名称的引用。 - Cory Roy
遇到了完全相同的问题。如果一些谷歌员工能够抽出时间来解决这个问题,那就太好了;) - Subodh Nijsure
@SubodhNijsure 你找到解决方案了吗? - Luca Thiede

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接