diff --git a/app/build-logic/build.gradle.kts b/app/build-logic/build.gradle.kts index 350e30f3e..31b5ad846 100644 --- a/app/build-logic/build.gradle.kts +++ b/app/build-logic/build.gradle.kts @@ -18,4 +18,5 @@ gradlePlugin { dependencies { compileOnly(libs.android.gradle.plugin) + compileOnly(libs.android.build.sdk.common) } diff --git a/app/build-logic/src/main/java/AddCommentTask.kt b/app/build-logic/src/main/java/AddCommentTask.kt index c5af1ab4b..76586baa6 100644 --- a/app/build-logic/src/main/java/AddCommentTask.kt +++ b/app/build-logic/src/main/java/AddCommentTask.kt @@ -1,6 +1,7 @@ import com.android.build.api.artifact.ArtifactTransformationRequest import com.android.build.api.dsl.ApkSigningConfig import com.android.builder.internal.packaging.IncrementalPackager +import com.android.ide.common.signing.KeystoreHelper import com.android.tools.build.apkzlib.sign.SigningExtension import com.android.tools.build.apkzlib.sign.SigningOptions import com.android.tools.build.apkzlib.zfile.ZFiles @@ -14,8 +15,6 @@ import org.gradle.api.tasks.Internal import org.gradle.api.tasks.OutputDirectory import org.gradle.api.tasks.TaskAction import java.io.File -import java.security.KeyStore -import java.security.cert.X509Certificate import java.util.jar.JarFile abstract class AddCommentTask: DefaultTask() { @@ -39,13 +38,21 @@ abstract class AddCommentTask: DefaultTask() { val inFile = File(artifact.outputFile) val outFile = outFolder.file(inFile.name).get().asFile - val privateKey = signingConfig.get().getPrivateKey() + val config = signingConfig.get() + val info = KeystoreHelper.getCertificateInfo( + config.storeType, + config.storeFile, + config.storePassword, + config.keyPassword, + config.keyAlias + ) + val signingOptions = SigningOptions.builder() .setMinSdkVersion(0) .setV1SigningEnabled(true) .setV2SigningEnabled(true) - .setKey(privateKey.privateKey) - .setCertificates(privateKey.certificate as X509Certificate) + .setKey(info.key) + .setCertificates(info.certificate) .setValidation(SigningOptions.Validation.ASSUME_INVALID) .build() val options = ZFileOptions().apply { @@ -64,14 +71,4 @@ abstract class AddCommentTask: DefaultTask() { outFile } - - private fun ApkSigningConfig.getPrivateKey(): KeyStore.PrivateKeyEntry { - val keyStore = KeyStore.getInstance(storeType ?: KeyStore.getDefaultType()) - storeFile!!.inputStream().use { - keyStore.load(it, storePassword!!.toCharArray()) - } - val keyPwdArray = keyPassword!!.toCharArray() - val entry = keyStore.getEntry(keyAlias!!, KeyStore.PasswordProtection(keyPwdArray)) - return entry as KeyStore.PrivateKeyEntry - } -} \ No newline at end of file +} diff --git a/app/gradle/libs.versions.toml b/app/gradle/libs.versions.toml index 31cb991d8..ae3ec9b56 100644 --- a/app/gradle/libs.versions.toml +++ b/app/gradle/libs.versions.toml @@ -1,6 +1,7 @@ [versions] kotlin = "2.3.20" android = "9.1.0" +android-tools = "32.1.0" ksp = "2.3.4" rikka = "1.3.0" navigation = "2.9.7" @@ -75,8 +76,9 @@ navigation3-runtime = { module = "androidx.navigation3:navigation3-runtime", ver navigation3-ui = { module = "androidx.navigation3:navigation3-ui", version.ref = "navigation3" } navigationevent-compose = { module = "androidx.navigationevent:navigationevent-compose", version.ref = "navigationevent" } -# Build plugins +# For build-logic android-gradle-plugin = { module = "com.android.tools.build:gradle", version.ref = "android" } +android-build-sdk-common = { module = "com.android.tools:sdk-common", version.ref = "android-tools" } [plugins] android-application = { id = "com.android.application", version.ref = "android" }