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就不用设置了。

相关推荐
恋恋西风4 小时前
C++ 理解 std::thread 在单核和多核上的行为差异
开发语言·c++
学长毕业设计4 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
Brilliantwxx4 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
东小西4 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西4 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
许彰午5 小时前
22-DataCenter报文序列化
java·低代码·架构·状态模式
2601_962065255 小时前
[MySQL] SQL优化之性能分析
java·sql·mysql
BizzZ_5 小时前
C++(22)——类型转换和IO流
开发语言·c++
小范同学_5 小时前
JDK1.7 与 JDK1.8 HashMap 底层原理对比 + 数组并发扩容死循环详解
java·开发语言
geovindu5 小时前
CSharp: 万年历
开发语言·后端·c#·.net