Android-0.Android Studio生成签名文件并解决Release下APK is not signed问题

生成签名文件

Build—Generate Signed Apk…,如下图:
在这里插入图片描述
之后一路next,最后会在你之前选择的存储文件的文件夹中生成一个.jks文件。jks就是java key store的缩写。
这里演示,密码全部使用654321

查看jks文件的指纹证书MD5值

进入到你的.android目录:即AVD所在目录,也就是ANDROID_SDK_HOME这个环境变量所在的目录。格式:

keytool -v -list -keystore .jks所在的路径

G:\Andriod\.android>keytool -v -list -keystore "D:\Program Files\Android\key\hgy413.jks"
输入密钥库口令:

密钥库类型: JKS
密钥库提供方: SUN

您的密钥库包含 1 个条目

别名: hgy413
创建日期: 2018-9-28
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=hgy413, OU=hgy413, C=cn
发布者: CN=hgy413, OU=hgy413, C=cn
序列号: 16f45539
有效期开始日期: Fri Sep 28 12:21:04 CST 2018, 截止日期: Tue Sep 22 12:21:04 CST 2043
证书指纹:
         MD5: 2F:95:E2:2B:2A:E3:E5:CE:7D:51:9F:D0:70:C7:8E:2A
         SHA1: B5:E2:CE:B3:5F:B9:D1:B7:44:38:99:55:A1:BF:A6:3F:DE:80:E0:3C
         SHA256: DE:48:9E:4A:84:15:B5:2E:3A:61:26:58:E9:F7:F4:FD:92:0A:9B:9A:A8:5D:58:FB:4B:23:3D:80:66:DB:F4:8E
         签名算法名称: SHA256withRSA
         版本: 3

扩展:

#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: AF E9 F4 9B 0A A4 65 23   13 E5 36 73 39 C8 F4 63  ......e#..6s9..c
0010: D9 6B 03 1C                                        .k..
]
]



*******************************************
*******************************************

注意,因为我的jks路径带了空格,所以要双引号括起来。输入密钥时不会显示,输完回车即可。

APK is not signed

release未设置签名时会报以下错误:

the apk for your currently selected variant(app-release-unsigned.apk)is not signed. Please specity a signing configuration for this variant(release)

此时会有以下提示:
在这里插入图片描述
apk图标会有小红叉,并有Error提示,点击Fix或者File–>Project Structure–>Signing打开下图界面:
点击中间的+号,并输入和前面创建签名一样的信息。
在这里插入图片描述
切换到Build Type,选择release,将Signing Config选择hgy413:
在这里插入图片描述
sync即可。
注意,如果Signing中配置的密码不正确,在真正运行到AVD上时会报错。

另一种添加方式:
比如我们在app/src目录下创建一个叫key的目录,把hgy413.jks拷贝到此目录下,
然后在对应module的build.gradle中android根节点添加:

     signingConfigs {
        debug {
            File strFile = new File("./src/key/hgy413.jks")
            storeFile file(strFile)
            storePassword "654321"
            keyPassword "654321"
            keyAlias "hgy413"
            // println strFile.absolutePath;
            //println strFile.absolutePath;
        }
        release {
            File strFile = new File("./src/key/hgy413.jks")
            storeFile file(strFile)
            storePassword "654321"
            keyPassword "654321"
            keyAlias "hgy413"
            // println strFile.absolutePath;
        }
    }

并在同级的buildTypes节点的release下增加:

signingConfig  signingConfigs.release

如下图:
在这里插入图片描述

其他

有时设置完这一切后,你会发现还是提示错误:

Could not get unknown property 'hgy413' for SigningConfig container of type org.gradle.api.internal.FactoryNamedDomainObjectContainer.

这时你要留意下,.gradle文件中signingConfigs这个配置块是否在buildTypes前面?,如果不是,就把它调整到前面。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值