android-实例-蒲公英-更新与安装-5-签名与生成APK

1.在获取当前签名状态

java 复制代码
// 判断当前是否为 Debug 版本
boolean isDebug = (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
Log.d("BuildType", isDebug ? "Debug 版本" : "Release 版本");

2. 设置签名

2. 1 创建签名文件(旧版)

key store path : C:\apk_key\appkey2608.jks

password : 123456 comfirm: 123456

key: alias: key0

password : 123456 comfirm: 123456

错误部分

Key was created with errors:

Warning:

JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore

C:\apk_key\appkey2608.jks -destkeystore

C:\apk_key\appkey2608.jks -deststoretype pkcs12"

迁移到行业标准格式 PKCS12。

这不是错误,而是警告!不必理会

您看到的 Key was created with errors 以及后续的 Warning并不是致命错误 ,而是 Java 给出的迁移建议 。您的密钥库文件 appkey.jks 实际上已经成功创建了。

继续

3.在工程模块中配置

在build.grable(模块名)中配置

java 复制代码
android {
    compileSdkVersion 30
    buildToolsVersion '30.0.0'


    defaultConfig {
      ..................
    }

    //------------------------------------260807(参考蒲公英文档篇-签名与打包)
    signingConfigs {
        release {
            storeFile file("C:/apk_key/appkey2608.jks")
            //storePassword System.getenv("123456")
            storePassword "123456"
            keyAlias "key0"
            keyPassword System.getenv("123456")
        }
    }
     //--------------------------------------------------------------
    buildTypes {
        release {
            // 让 Release 构建使用这个签名配置
            signingConfig signingConfigs.release
            // 建议开启代码混淆和资源压缩
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

这个配置的意义非常重大------它决定了你打出的APK 能不能安装、能不能上架、能不能更新

一句话总结

这个配置就是给APP办了一张"身份证",证明这个APP是你开发的。

没有它,Android系统根本不允许安装;有了它,你的APP才能正常发布和更新

安装时的身份验证(最重要)

复制代码
用户下载APK → 系统检查签名 → 发现是你签的 → 允许安装
                                  ↓
                          如果不是你签的 → 拒绝安装

这就是你之前遇到"包名冲突"的根源

  • 手机里已经装了一个APP,签名是张三的

  • 你现在想装一个同名APP,签名是李四的

  • 系统认为:这是两个不同的人,不能覆盖 → 报错

注意:

1.要实现app内在线更新,必须通过菜单栏点击 Build → Generate Signed Bundle / APK...
生成的apk,使用绿三角run联机只能装在实机属于debug模式,与发布的apk强明不一致。

2.签名生成appkey.jks文件最好使全Android工程通用,不要放在单独模块之中。生成其他模块
就apk就不用设置了。

相关推荐
码哥DFS8 小时前
构造函数、实例对象、对象原型 ----三者关系
开发语言·javascript·原型模式
952368 小时前
Spring-cloud配置中心
java·spring·spring cloud·微服务
quantdash_cc8 小时前
告别自建 Requests/BS4 网页爬虫:基于 QuantDash 搭建零维保的高性能量化行情流水线
开发语言·爬虫·python·pandas·量化·quantdash
ydd1001008 小时前
寻找两个正序数组的中位数 Java 题解,二分分割详解
java·开发语言
半亩码田9 小时前
C#转Python第3.1篇:Python 的 class 没有访问修饰符?面向对象的另一条路
开发语言·python·c#
阿pin9 小时前
Android随笔-Serializable与Parcelable
android·serializable·parcelable
天空之城--9 小时前
Android 事件分发机制深度解析——原理、源码与实战综合总结
android
真上帝的左手10 小时前
10. 软件设计&架构-Spring Security 7 整合CAS SSO 单点登录
java·spring·架构·sso
Wzx19801210 小时前
python沙箱和docker沙箱你选对了吗?
开发语言·python·docker