android studio:发布apk没有签名

Per*_*man 16 release android-studio

*自从最初发布以来,我已经改写了帖子*

当我尝试运行一个刚构建的版本apk时,我收到一个错误"你当前选择的版本的apk没有签名." 这是在"编辑配置"弹出窗口中.这是我的步骤:

  1. 在Build Variants选项卡中,选择"release"
  2. 在菜单中,选择Build - > Generate Signed APK
  3. 在弹出窗口中,填写密钥库和密码的字段.
  4. 在第二个面板中,将目标文件夹更改为...\app\build\outputs\apk(请参阅下面的注释*)
  5. 观察工作室右上方的通知:APK(s)已成功生成.
  6. 在菜单中,单击"运行" - >"运行应用程序".
  7. 我得到一个"编辑配置"弹出窗口,其中包含错误"您当前所选变体的apk ...未签名.

那么,为什么这个错误呢?生成的APK似乎有效.我已成功将其发布到Android商店(仅限alpha测试)并验证堆栈转储是否已被混淆.

我不能做的是将它(上面的步骤6)下载到我的设备.我想这没关系,因为我可以下载调试版本.

(*)Android Studio将发布apk的输出默认为更高的,可能更方便的目录.但是我发现当它们分散时很难管理生成文件的一致性,所以我更喜欢在一个地方生成所有apks.

Bad*_*chi 24

转到文件\项目结构

签名标签

味道标签

构建类型

完成!;)

  • 谢谢,这应该是公认的答案. (3认同)
  • 该界面不是最新版本的AS。有人可以更新吗? (2认同)

Tor*_*ris 20

在项目结构中设置签名配置.

  1. 文件 - >项目结构......
  2. 选择模块/应用程序(或其他模块)
  3. 单击"签名"选项卡并填写.首先是
    密钥别名和密钥密码."生成签名APK"对话框中的顺序不同.
  4. 单击Build Types选项卡并选择release.
    在签名配置下拉列表中选择"配置".
  5. 单击确定以关闭项目结构.
  6. 运行 - >运行应用程序

运行(或调试)应用程序似乎使用"Buiild - > Build APK"构建的apks.因此,如果app模块的构建变体是"release",我们应该设置签名配置.


s-h*_*ter 8

首先,如果没有,则创建一个密钥库文件。

  1. 从下拉菜单中单击构建
  2. 选择生成签名的 APK
  3. 单击下一步
  4. 单击创建新密钥库
  5. 填写密钥库路径、别名、密钥库密码和别名的表格,证书区域中至少有一个字段。
  6. 单击确定
  7. 将在指定的密钥库路径中创建密钥库文件。

第二次应用程序构建 gradle 文件更新为类似这样的文件以包含签名配置。

android {
    signingConfigs {
        config {
            keyAlias 'mykeyalias'
            keyPassword 'android'
            storeFile file('/Users/yourname/path/to/the/android/project/folder/android_project_folder_name/app/debug.keystore')
            storePassword 'android'
        }
    }
    buildTypes {
        debug {
            applicationIdSuffix = ".debug"
            versionNameSuffix "-debug"
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

第三,构建并运行应用程序,完成。


Ron*_*ley 5

将此行添加到build.gradle中的版本{...}中

signingConfig signingConfigs.config
Run Code Online (Sandbox Code Playgroud)