如何解决如何以编程方式创建 Android 签名证书密钥库 JKS 文件而不是使用 Android Studio?
我想在不使用 Android Studio 的情况下以编程方式创建 jks 文件(密钥库)文件(Java/Kotlin JVM 上的一些脚本)。可能吗?
我有一些代码来创建这个文件,但是如何将所有需要的数据填充到那个键?
fun createJksFile() {
val keyFilePassword = "test"
val keyAlias = "test"
val keyPassword = "test"
val keyvalidity = "100"
val CertificateFirstandLastName = "Test"
val CertificateOrganizationalUnit = "Test"
val CertificateOrganization = "Test"
val CertificateCityorLocality = "US"
val CertificateStateorProvince = "US"
val CertificateCountryCode = "US"
val ks = KeyStore.getInstance(KeyStore.getDefaultType())
val password = keyFilePassword.tochararray()
ks.load(null,password)
// Todo: how to set all needed data?
FileOutputStream(File(projectDir,"_test_key.jks")).use { fos ->
ks.store(fos,password)
}
}
解决方法
我决定使用这个解决方案
val keystoreCommand = "keytool -genkey -noprompt \n" +
"-alias ${keyStore.keyAlias} \n" +
"-dname \"CN=${keyStore.certificateFirstandLastName},OU=${keyStore.certificateOrganizationalUnit},O=${keyStore.certificateOrganization},L=${keyStore.certificateCityorLocality},S=${keyStore.certificateStateorProvince},C=${keyStore.certificateCountryCode}\" \n" +
"-keystore \"C:\\Users\\Desktop\\keystore.jks\" \n" +
"-storepass ${keyStore.keyFilePassword} \n" +
"-keypass ${keyStore.keyPassword}"
Runtime.getRuntime().exec(keystoreCommand).apply {
waitFor()
}
data class KeyStore(
val keyFilePassword: String,val keyAlias: String,val keyPassword: String,val keyValidity: String,val certificateFirstandLastName: String,val certificateOrganizationalUnit: String,val certificateOrganization: String,val certificateCityorLocality: String,val certificateStateorProvince: String,val certificateCountryCode: String
)
虽然我们不用keytool也能做到,但是处理https://stackoverflow.com/a/45700785/7767664的代码相当多
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。