在Android项目开发中想要将项目导出为apk的时候需要选择一个数字证书,即keystore文件,用来对apk进行签名,是导出APP的一个钥匙,一般需要我们自己生成android.keystore文件。
使用JDK的keytool工具生成
- 安装jdk,keytool.exe位于目录下/jdk/bin/
- 使用命令:
keytool -genkey -v -keystore android.keystore -alias androidtest -keyalg RSA -validity 365
#参数说明
- genkey 生成文件
- alias 别名
- keyalg 加密算法
- validity 有效期
- keystore 文件名
示例
C:\Users\Admin>keytool -genkey -v -keystore android.keystore -alias androidtest -keyalg RSA -validity 365
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
[Unknown]: test
您的组织单位名称是什么?
[Unknown]: test
您的组织名称是什么?
[Unknown]: test
您所在的城市或区域名称是什么?
[Unknown]: test
您所在的省/市/自治区名称是什么?
[Unknown]: test
该单位的双字母国家/地区代码是什么?
[Unknown]: test
CN=test, OU=test, O=test, L=test, ST=test, C=test是否正确?
[否]: y
正在为以下对象生成 2,048 位RSA密钥对和自签名证书 (SHA256withRSA) (有效期为 365 天):
CN=test, OU=test, O=test, L=test, ST=test, C=test
输入 <androidtest> 的密钥口令
(如果和密钥库口令相同, 按回车):
再次输入新口令:
[正在存储android.keystore]
Warning:
JKS 密钥库使用专用格式。建议使用 "keytool -importkeystore -srckeystore android.keystore -destkeystore android.keystore -deststoretype pkcs12" 迁移到行业标准格式 PKCS12。
- 生成文件android.keystore
- 查看keystore信息:
keytool -list -keystore “android.keystore -rfc
使用Android Studio生成
- 打开Android Studio-Build-Generate Signed Bundle/APK-APK-Next-Create New,填写信息
- 点击OK,在Key store path路径下生成android.keystore
使用keystore给apk签名
- 打开Android Studio-Build-Generate Signed Bundle/APK,选择Key store path,填写密码,点击Next
- 选择release,Signature Versions勾选V1和V2,最后Finish
- 提示生成/release/app-release.apk即可
Android Studio代码混淆及自动签名打包apk
混淆
混淆配置的文件:proguard-rules.pro
自动签名apk
- 打开Project Structure,选择Modules-Signing Configs,添加自己的config
- 执行完成后,会在build.gradle中自动加上 signingConfigs{ config {…} }的信息
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
defaultConfig {
applicationId "com.meigsmart.meigrs32"
minSdkVersion 21
targetSdkVersion 25
versionCode 53
versionName "1.0.53"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
//签名参数
signingConfigs {
sginconfig {
keyAlias 'androiddebug'
keyPassword 'android'
storeFile file('debug.keystore')
storePassword 'android'
}
}
buildTypes {
release {
//签名
signingConfig signingConfigs.sginconfig
//混淆 ture为开启 一般relseae时为true debugs为false
minifyEnabled false
//加载默认混淆配置文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.sginconfig
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
- 选择Build Variants-build Types,选择release
zip align enabled 默认为true, 用于启用优化Apk的操作