App-release-unsigned.apk没有签名

我在github上下载了一个Android应用程序的zip文件,我试图运行它,但我得到了一个带有此消息的对话框

app-release-unsigned.apk is not signed. Please configure the signing information for the selected flavor using the Project Structure dialog.

我使用Android Studio。 我该怎么办?< / p >

183858 次浏览

出于安全原因,您不能在Android上安装unsigned apk。所以如果你只有未签名的apk:你必须签署它。下面是如何做到这一点:链接

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

备选方案可以是:

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

始终使用您的构建对您的构建进行签名。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
}
}
}

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

Gradle Plugin User Guide .

确保在Android Studio中构建变体设置为调试(而不是释放)(检查构建变体面板)。

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

但是,您将需要创建和配置一个特定的密钥存储库来发布。

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

我成功地调试了签名的APK,遵循这个过程:-

  1. 在“Build Variant”工具栏中选择“release”版本
  2. 在模块的Build.gradle中设置发布构建类型的debuggable true
  3. 进入文件->项目结构->签名标签下填写所有信息->风味下
  4. . tab->选择签名配置
  5. 设置断点
  6. 在调试模式下运行应用程序

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

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

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

我的解决方案是将签名配置的名称从默认的“config”更改为“debug”。为了验证,我将其更改为其他一些随机名称并再次得到错误,然后将其更改为“调试”,错误就消失了。所以,虽然这看起来是人为的,我倾向于不相信这是全部的故事,尝试一下这个解决方案。

如果有人想使用Android Studio调试释放构建,请遵循以下步骤:

  1. 将构建变体设置为发布模式。

enter image description here

  1. 右键单击左侧导航窗格中的app,单击打开模块设置

  2. 进入签名标签。添加签名配置并填写信息。选择你的钥匙链。

enter image description here

  1. 进入构建类型选项卡。选择释放模式并设置:

-可调试到真正的

-将Config签名到配置。(你刚创建的那个)。

enter image description here

同步你的gradle。享受吧!

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
}
}

我也出现了这个问题,下面是我的代码

        storeFile file(properties.getProperty("filepath"))
storePassword properties.getProperty("keypassword")
keyAlias properties.getProperty("keyAlias")
keyPassword properties.getProperty("keypassword")

原因是属性名错误,它应该是keyPassword而不是keyPassword

在工具窗口栏选择构建变量 将构建变量从发布更改为调试

如果你想在调试模式下运行app

1)看左下角,在收藏夹上面有构建变体

2)点击Build variables。单击release并选择调试

它工作完美!!

我的问题是通过改变Stéphane所建议的构建变量来解决的,如果有人像我一样很难找到“构建变量”,这里是一个截图,你可以在那里找到它。

enter image description here

我是怎么解决的

发生此错误是因为您已将构建变量设置为发布模式。将其设置为构建模式并再次运行项目。

如果你想在发布模式下运行,只需生成一个签名的apk,就像我们在发布应用程序时通常做的那样

最后对我有用的,我也不知道为什么,是:

  • 去了LastPass(我用来保存所有密码的服务)
  • 把光标放在密码上方,双击,选择我的密码
  • 一旦选择,我按cmd C复制
  • 切换到Android study,点击cmd V进行粘贴

请注意,我多次尝试通过在密码末尾单击并移动鼠标选择密码来复制密码。

这很奇怪,但它只能通过双击密码顶部来复制它。

我也使用了打开模块设置>签名…方法由@NightFury在这篇文章中解释。

用于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")
}
}
如果任何人想使用Android Studio 3.5调试和发布单独的构建变体,请遵循以下步骤: 1.

Build Variant

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

Signing Config

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

signin

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

final

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

在构建中添加以下代码行。grade文件为我工作,将它们添加到下面的buildTypes块发布如下所示

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
applicationIdSuffix ".debug"
debuggable true
}