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