我在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。 我该怎么办?
答案 0 :(得分:367)
如果有人想使用Android Studio调试发布版本,请按以下步骤操作:
答案 1 :(得分:90)
确保在Android Studio中将构建变体设置为 debug (而不是 release )(检查构建变体< / em> panel)。
如果设置为debug,它应该使用自动生成的调试密钥库自动签署应用程序,而不编辑构建脚本。
但是,您需要创建和配置特定的密钥库以供发布。
官方文档,涵盖调试和发布模式:https://developer.android.com/tools/publishing/app-signing.html
答案 2 :(得分:46)
始终使用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
}
}
}
如果您想了解更多与Android Studio相关的Gradle构建系统,请访问:
答案 3 :(得分:32)
我已成功调试已签名的APK,请按照以下步骤操作: -
Build.gradle
的{{1}}中
答案 4 :(得分:13)
如果您想在调试模式下运行应用
1)看左侧底部,收藏夹上方有构建变体
2)单击Build Variants。点击发布,然后选择调试
它完美无缺!!!
答案 5 :(得分:5)
出于安全原因,您无法在Android上安装未签名的apk。因此,如果您只有未签名的apk:您必须签名。以下是如何执行此操作:link
请注意,您可以使用自签名证书对apk进行签名。
替代方案可以是:
答案 6 :(得分:5)
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
}
}
答案 7 :(得分:5)
如果有人想使用Android Studio 3.5调试和发布单独的构建版本,请执行以下步骤: 1.将构建变体设置为发布模式。
build.gradle
,然后更改您的buildTypes
>“发布”部分,如下图所示。然后运行您的项目。编码愉快。
答案 8 :(得分:2)
在工具窗口栏中选择Build Variants 将构建变体从发布更改为调试
答案 9 :(得分:2)
答案 10 :(得分:1)
我如何解决此问题
发生此错误是因为您已将构建变体设置为发布模式。将其设置为构建模式并再次运行项目。
如果要在发布模式下运行,只需在发布应用程序时按照我们通常的方式生成签名的apk
答案 11 :(得分:0)
我的解决方案是将签名配置的名称从默认的“config”更改为“debug”。为了验证,我将其更改为其他随机名称并再次出现错误,然后将其更改回“debug”并且错误消失了。因此,虽然它似乎是人为的,我倾向于不相信这是整个故事,但试试这个解决方案。
答案 12 :(得分:0)
我也出现了这个问题,我的代码在下面
storeFile file(properties.getProperty("filepath"))
storePassword properties.getProperty("keypassword")
keyAlias properties.getProperty("keyAlias")
keyPassword properties.getProperty("keypassword")
原因是属性名称错误,应该是keyPassword而不是keypassword
答案 13 :(得分:0)
最终对我有用的,我不知道为什么,是:
注意,我确实尝试过多次复制,方法是单击密码的末尾以选择密码,然后通过移动鼠标选择密码。
这很奇怪,但是只能通过双击密码顶部的副本来工作。
我也确实使用了@NightFury在这篇文章中介绍的“打开模块设置”>“签名...”方法。
答案 14 :(得分:0)
对于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")
}
}
答案 15 :(得分:-1)
在build.gradel文件中添加下面的代码行对我有用,如图所示在发布下面的buildTypes块下添加它们
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
applicationIdSuffix ".debug"
debuggable true
}