app-release-unsigned.apk未签名

and*_*rew 175 android github digital-signature android-studio

我在github上下载了一个Android应用程序的zip文件,我正在尝试运行它,但是我收到了一条包含此消息的对话框

app-release-unsigned.apk is not signed. Please configure the signing information for the selected flavor using the Project Structure dialog.
Run Code Online (Sandbox Code Playgroud)

我正在使用Android Studio.我应该做些什么?

Nig*_*ury 404

如果有人想使用Android Studio 调试发布版本,请按照下列步骤操作:

  1. 将构建变体设置为释放模式.

在此输入图像描述

  1. 右键单击左侧导航窗格中的应用程序,单击" 打开模块设置".

  2. 转到签名选项卡.添加签名配置并填写信息.选择你的钥匙串.

在此输入图像描述

  1. 转到" 构建类型"选项卡.选择发布模式并设置:

- 可以判断为.

- 将配置指定给配置.(你刚刚创建的那个).

在此输入图像描述

同步你的gradle.请享用!

  • **没有必要**设置***Debuggable***到***true***,(除非真的是这样). (13认同)
  • @IshaanGarg你应该在发布apk时将debuggable设置为false (7认同)
  • 您应该知道,在将配置设置为构建类型后,所有密钥信息(包括密码)都将显示在gradle文件中... (3认同)
  • 在为prod实际生成发布APK时,我们应该将Debuggable设置为false吗?或者工作室会自己做吗? (2认同)

Sté*_*ane 93

确保在Android Studio 中将构建变体设置为debug(而不是release)(检查构建变体面板).

如果设置为debug,它应该使用自动生成的调试密钥库自动对应用程序进行签名,而无需编辑构建脚本.

但是,您需要创建和配置特定的密钥库以供发布.

官方文档,涵盖调试和发布模式:https://developer.android.com/tools/publishing/app-signing.html


Mar*_*ert 49

始终使用build.gradle DSL脚本对您的构建进行签名,如下所示:

    android {
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您想了解与Android Studio相关的更多Gradle构建系统,请访问:

Gradle插件用户指南


Sho*_*ana 48

如果有人想使用 Android Studio 3.5 调试和发布单独的构建变体,请按照以下步骤操作: 1. 将构建变体设置为发布模式。

构建变体

  1. 转到文件>>项目结构
  2. 选择模块,然后签名配置
  3. 单击签名配置下的加号图标

签名配置

  1. 选择发布部分并提供您的发布应用信息,然后应用和确定。

登入

  1. 转到您的应用程序级别build.gradle并更改您的buildTypes>“发布”部分,如下面的屏幕截图。

最终的

然后运行你的项目。快乐编码。

  • 第 6 步也可以在项目结构中完成。项目结构 -> 构建变体 -> 模块(应用程序) -> 签名配置。(根据 NightFurrys [答案](/sf/answers/2447491791/)) (2认同)

Moh*_*han 34

我成功地能够调试已签名的APK,请按照以下步骤操作: -

  1. 在"Build Variant"工具栏中选择"发布"版本
  2. 在为发布版本类型Build.gradle设置的模块中debuggable true
  3. 转到文件 - >项目结构 - >在签名选项卡下填写所有信息 - >在Flavors选项卡下 - >选择签名配置您刚刚创建
  4. 设置断点
  5. 在调试模式下运行应用程序


Sam*_*iya 13

如果你想在调试模式下运行应用程序

1)查看左侧底部,在收藏夹上方有Build Variants

2)单击Build Variants.单击发行版并选择调试

它完美!


yeh*_*att 9

我的问题是通过按照 Stéphane 的建议更改构建变体来解决的,如果有人像我一样努力寻找“构建变体”,这里有一个截图,您可以在其中找到它。

在此处输入图片说明

  • 将构建变体从“调试”更改为“发布”后,我遇到问题 (2认同)

Nic*_*hek 8

signingConfigs应该在buildTypes之前

signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }

        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androidotherkey"
            keyPassword "android"
        }
    }

    buildTypes {
        bar {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.debug
        }
        foo {
            debuggable false
            jniDebugBuild false
            signingConfig signingConfigs.myConfig
        }
    }
Run Code Online (Sandbox Code Playgroud)


ben*_*n75 6

出于安全原因,您无法在Android上安装未签名的apk.因此,如果您只有未签名的apk:您必须签名.以下是如何做到这一点:链接

请注意,您可以使用自签名证书对apk进行签名.

另一种选择可以是:

  • 下载签名的apk(如果有).
  • 下载源代码,编译它们(使用Android-Studio或gradle或...).它将生成多个apks,其中一个将使用您的调试密钥签名(因此您将能够安装它)


小智 6

您下载的应用程序项目可能在build.gradle文件中包含签名信息。如果您看到类似以下的代码:

buildTypes {
    debug {
        signingConfig signingConfigs.release
    }
    release {
        signingConfig signingConfigs.release
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以删除它们,然后重试。


Evg*_*bei 5

对于Gradle Kotlin DSL

signingConfigs {
    create("releaseConfig") {
        storeFile = file("your keystore file path")
        storePassword = "storePassword"
        keyAlias = "keyAlias"
        keyPassword = "keyPassword"
    }
}
buildTypes {
    getByName("release") {
        signingConfig = signingConfigs.getByName("releaseConfig")
        isMinifyEnabled = true
        isShrinkResources = true
        proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro")
    }
}
Run Code Online (Sandbox Code Playgroud)