微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何以编程方式创建 Android 签名证书密钥库 JKS 文件而不是使用 Android Studio?

如何解决如何以编程方式创建 Android 签名证书密钥库 JKS 文件而不是使用 Android Studio?

我想在不使用 Android Studio 的情况下以编程方式创建 jks 文件(密钥库)文件(Java/Kotlin JVM 上的一些脚本)。可能吗?

enter image description here

我有一些代码来创建这个文件,但是如何将所有需要的数据填充到那个键?

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 举报,一经查实,本站将立刻删除。