安装Android Studio失败,APK未签名。

13

最近我从Eclipse切换到了Android Studio,并将JDK从java-open-jdk更改为jdk1.7.0_45

现在,我正在尝试运行我的第一个应用程序,但却收到以下消息:

Installation failed since the APK was either not signed, or signed incorrectly.
If this is a Gradle-based project, then make sure the signing configuration 
is specified in the Gradle build script

编辑:

当我从Android Studio运行时,我会收到上面显示的错误消息。当我从命令行运行时,我不会收到错误(嗯,应用程序正在运行并且我遇到了一个错误,但与Gradle无关)。

我从这里获取了代码。

您可以在Google存储库中查看build.gradle文件。

更新2:

我添加了此代码:

signingConfigs {
    release {
        storeFile file("john.keystore")
        storePassword "john"
        keyAlias "johnkeystore"
        keyPassword "john"
    }
}

在 build.gradle 文件中 buildTypes 代码块的上方。 john.keystore 文件位于我的项目根目录下。我正在运行 gradlew assembleRelease 命令并且得到了一个 xxx-release-unsigned.apk 文件。

8个回答

19

如果你确实是使用gradle构建,你需要配置 signingConfigs。Android可以自动配置你的debug签名设置。你可以按照以下方式创建release signingConfig

android {

    signingConfigs {

        release {

            storeFile file('android.keystore')
            storePassword "pwd"
            keyAlias "alias"
            keyPassword "pwd"
        }
    }

    buildTypes {

       release {

           signingConfig signingConfigs.release
       }
    }
}

请点击这里查看有关此主题的手册:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Signing-Configurations

如果您仍然遇到问题,请更新问题并附上您的build.gradle。最有可能的问题出在这里。我正在使用JDK 1.7,gradle构建工具运行正常。


1
看起来您没有在发布版本的构建类型中注册添加的 signingConfig。像这样:http://pastebin.com/VbaW9Hyz - Sergii Pechenizkyi
搞定了。现在我有tasks-android-sample-release.apk和tasks-android-sample-release-unaligned.apk。希望第一个是我需要的,除非它在apk名称中必须明确包含“signed”这个词? - mt0s
1
你是对的,-release.apk 已经准备好了。你可以通过运行下一个命令 jarsigner -verify -verbose -certs tasks-android-sample-release.apk 来双重检查 .apk 是否已经签名。你应该能够看到已签名 apk 的 jar verified 输出。 - Sergii Pechenizkyi
Android Studio 0.5.2将签名配置放在了build.gradle的构建变量之下。手动将signingConfigs容器移至上方即可解决该问题。 - RobP

7

我曾经遇到过同样的问题,我去了 "Build" -> "Clean Project" 并重新执行了这个项目,然后它就正常工作了。


对我来说,在构建变体之间切换后重新同步项目解决了这个问题。 - racs

0
如果您的目标不是为应用程序创建自定义构建,则可能希望从测试设备中清除有关其的所有数据,如果您正在使用模拟器,则只需从设备中擦除所有数据。 转到 -> 工具 -> Android -> AVD管理器 -> [要擦除的设备](在操作选项卡中) -> 擦除数据

enter image description here

如果是实际设备,只需卸载应用程序及其所有相关数据。

原因在于未签名的APK具有签名,因此设备会看到您正在尝试安装某个与此处生成的包名称相同的内容。

希望这能为您节省一些时间。


0

我一直在和Android Studio以及gradle和构建变体的问题苦苦挣扎。

我已经根据定义更改了构建类型中的这部分内容:

debug
release

0

对我来说,这些答案都没用,即使我已经从手机上卸载了该应用程序,我仍无法部署它。有效的方法是将该应用程序安装到另一台设备上,然后再尝试在以前的设备上部署它,结果竟然奇迹般地成功了。


0

我在开发和运行测试时遇到了同样的问题,我去 Build -> Rebuild Project 然后重新启动模拟器。这对我有用。


0

如果您的设备有多个用户,请在安装签名APK之前检查是否为其他用户安装了相同的应用程序。如果有,请将其删除。

对我来说,这是拒绝安装签名APK的根本原因。


0

只需构建 -> 重新构建项目,然后重新启动模拟器。这对我有用。


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