diff --git a/example/app/build.gradle.kts b/example/app/build.gradle.kts index d8c5a88..f29b42a 100644 --- a/example/app/build.gradle.kts +++ b/example/app/build.gradle.kts @@ -6,6 +6,7 @@ plugins { android { compileSdk = 33 + ndkVersion = "25.2.9519653" defaultConfig { applicationId = "dev.matrix.rust" diff --git a/plugin/src/main/java/dev/matrix/agp/rust/AndroidRustPlugin.kt b/plugin/src/main/java/dev/matrix/agp/rust/AndroidRustPlugin.kt index 4dabaec..3df5113 100644 --- a/plugin/src/main/java/dev/matrix/agp/rust/AndroidRustPlugin.kt +++ b/plugin/src/main/java/dev/matrix/agp/rust/AndroidRustPlugin.kt @@ -22,7 +22,6 @@ class AndroidRustPlugin : Plugin { val androidExtension = project.getAndroidExtension() val androidComponents = project.getAndroidComponentsExtension() val tasksByBuildType = HashMap>>() - val minimumSupportedRustVersion = SemanticVersion(extension.minimumSupportedRustVersion) androidComponents.finalizeDsl { dsl -> val allRustAbiSet = mutableSetOf() @@ -82,6 +81,7 @@ class AndroidRustPlugin : Plugin { dsl.sourceSets.findByName(buildType.name)?.jniLibs?.srcDir(variantJniLibsDirectory) } + val minimumSupportedRustVersion = SemanticVersion(extension.minimumSupportedRustVersion) installRustComponentsIfNeeded(project, minimumSupportedRustVersion, allRustAbiSet) } diff --git a/plugin/src/main/java/dev/matrix/agp/rust/RustInstaller.kt b/plugin/src/main/java/dev/matrix/agp/rust/RustInstaller.kt index 1eb0d65..0df0647 100644 --- a/plugin/src/main/java/dev/matrix/agp/rust/RustInstaller.kt +++ b/plugin/src/main/java/dev/matrix/agp/rust/RustInstaller.kt @@ -13,7 +13,7 @@ internal fun installRustComponentsIfNeeded( return } - if (minimalVersion != null) { + if (minimalVersion != null && minimalVersion.isValid) { val actualVersion = readRustCompilerVersion(project) if (actualVersion < minimalVersion) { installRustUp(project) @@ -90,10 +90,11 @@ private fun readRustCompilerVersion(project: Project): SemanticVersion { }.assertNormalExitValue() val outputText = String(output.toByteArray()) - val regex = Regex("^rustc (\\d+\\.\\d+\\.\\d+) .*$", RegexOption.DOT_MATCHES_ALL) + val regex = Regex("^rustc (\\d+\\.\\d+\\.\\d+)(-nightly)? .*$", RegexOption.DOT_MATCHES_ALL) val match = checkNotNull(regex.matchEntire(outputText)) { "failed to parse rust compiler version: $outputText" } + return SemanticVersion(match.groupValues[1]) }