错误:您当前选择的变体(未知输出)的apk未签名。请为此变体(debug)指定签名配置。

74
升级到Android Studio Arctic Fox (2020.3.1) Canary 9后,我无法运行我的测试。它弹出编辑配置窗口,显示错误:当前选定变体(未知输出)的应用程序未签名。请为此变体(debug)指定签名配置。消息。我似乎不能仅通过创建.jks并像大多数帖子建议的那样使用发布签名配置来解决这个问题。我有点陷入了困境,不知道是降级还是尝试解决它。有没有人遇到过这个问题?欢迎任何建议和意见。

enter image description here

问题仍然存在于Android Studio Arctic Fox(2020.3.1)Canary 10版本中。
9个回答

208
我也遇到了这个问题,可能是在升级到Gradle 7.0.0后修改了默认的签名配置所致。您可以解决此问题而不需要降级Gradle。具体操作步骤如下:
1. 进入 文件菜单 > 项目结构Step Reference Image 1
2. 然后进入模块部分Step Reference Image 2
3. 接着进入默认配置选项卡Step Reference Image 3
4. 向下滚动至签名配置,然后单击下拉框Step Reference Image 4
5. 从下拉列表中选择$signingConfigs.debugStep Reference Image 5
6. 单击应用,然后单击确定,重新运行您的应用即可。
这对我解决了问题,希望对你也有用。

如果你遇到以下错误:INSTALL_PARSE_FAILED_NO_CERTIFICATES,请按照以下步骤操作:1- 卸载你的 apk2- 清理你的 Android 项目3- 构建你的 Android 项目4- 安装/运行你的 apk - Yago Rey
2
现在是2023年,但我仍然回到这个答案,因为问题仍然存在于Android Studio 2022.1.1中。感谢详细的解释。 - Mikhail

48

对我有效的方法是在应用级别的 build.gradle 文件中添加以下内容(以此示例中的“release”变体为例):


android{
   
   signingConfigs {
       release {
           storeFile file("path to your keystore file")
           storePassword "your store password "
           keyAlias "your keystore alias"
           keyPassword "your key password"
       }
   }

   buildTypes {
       release {
           ...
           ...
           signingConfig signingConfigs.release
       }
   }   

}

这对我很有帮助,谢谢。 - Eman
这个更改也解决了我的问题,谢谢。 - SkyDancer
1
顺序非常重要。在这个文件中,必须先有 signingConfigs { },然后是 buildTypes { } - Boken

16

我遇到了同样的问题,并找到了你的帖子。幸运的是,我能够解决它。按照以下步骤进行操作: 构建变体(左下角)> 活动构建变体 > 将其更改回 Debug


1
我已经尝试过这种方法,但对我没有起作用。即使我处于调试构建变体中,我仍然遇到了这个问题。 - Yekta Sarıoğlu

8
在应用级别的build.gradle文件中添加:
defaultConfig{
    ...

    signingConfig signingConfigs.debug
}

在defaultConfig块内部


1

请确保您在应用级别的build.gradle中未使用signingConfig,或尝试从菜单栏中的文件选项中选择“使缓存无效/重新启动”选项。


这两种方法是我的第一选择,但不幸的是,它们也没有解决问题。 - Yekta Sarıoğlu
请解释一下,为什么不在应用级别的build.gradle文件中? - Kalnode

1
如果 Android Gradle 插件(AGP)高于 7.0.0-alpha08,则会出现问题。因此,降级到 7.0.0-alpha08 可以解决问题。这样做的同时,您还必须降级到 Android Studio Arctic Fox (2020.3.1) Canary 8,因为后续版本需要其对应的 AGP 或最新版本。我不满意这种降级解决方案,但目前这是测试运行的唯一方法。

Android Studio Archives


1
对于Kotlin dsl,请将以下内容添加到您的BuildType部分:
signingConfig = signingConfigs.getByName("debug")

1
每个应用程序都需要使用密钥进行签名才能安装在设备上。Android Studio会自动为debug版本进行签名,但如果您想安装release版本的apk,则必须对其进行签名。
因此,有不同的方法来对apk进行签名。 方法1:可以使用debug凭据来签名release版本的apk。在app/build.gradle文件中,您可以定义一个变量,如下所示:
android {
    // ...

    defaultConfig {
        // ...
        signingConfig signingConfigs.debug
    }
}

注意:这将使用与debug签名相同的凭证来签署您的release apk。在生成aab或apk进行分发时,请记住这一点。

方法2:您还可以在app/build.gradle中单独签署release apk。您也可以使用问题中显示的GUI来签署它:

android{
   // ...
   signingConfigs {
       // ...
       release {
           storeFile file("key-store-file-path")
           storePassword "key-store-password "
           keyAlias "key-alias"
           keyPassword "key-password"
       }
   }
}

0

最新的Android Studio预览版(2020.3.1 Canary 15)已经修复了此问题,使用AGP版本7.0.0-alpha15


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