Establish native Linux ARM64 Android CI and verification gates (#94)
Android ARM verification / rust (push) Successful in 50m35s
Android ARM verification / android (push) Failing after 1h36m47s

This commit is contained in:
hugo committed 2026-10-08 20:34:48 +02:00
1 parent 1abd75282e
commit 9755f928d6
29 files changed
+1752 -56

No files matched your search

+29 -7
View File
@@ -12,7 +12,7 @@ android {
defaultConfig {
minSdk = libs.versions.minSdk.get().toInt()
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
ndk { abiFilters += listOf("arm64-v8a", "armeabi-v7a", "x86_64") }
ndk { abiFilters += listOf("arm64-v8a", "armeabi-v7a") }
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
@@ -22,12 +22,17 @@ android {
lint {
abortOnError = true
warningsAsErrors = true
// The user scoped this milestone to ARM Android; x86 ChromeOS is excluded.
disable += "ChromeOsAbiSupport"
}
}
kotlin {
jvmToolchain(25)
compilerOptions { jvmTarget.set(JvmTarget.JVM_17) }
compilerOptions {
jvmTarget.set(JvmTarget.JVM_17)
allWarningsAsErrors.set(true)
}
}
dependencies {
@@ -73,6 +78,12 @@ androidComponents.onVariants { variant ->
val nativeOutput = layout.buildDirectory.dir("generated/native/$name/jniLibs")
val rawBindings = layout.buildDirectory.dir("generated/bindings-raw/$name")
val bindings = layout.buildDirectory.dir("generated/bindings/$name")
val rustFlags = listOf(
"-D warnings",
"-C link-arg=-Wl,-z,max-page-size=16384",
"-C link-arg=-Wl,-z,common-page-size=16384",
"-C link-arg=-Wl,--build-id=sha1"
).joinToString(" ")
val native = tasks.register<Exec>("build${title}Rust") {
dependsOn(checkRustToolchain)
workingDir = workspace
@@ -81,22 +92,33 @@ androidComponents.onVariants { variant ->
inputs.property("cargoNdk", libs.versions.cargoNdk.get())
inputs.property("ndkVersion", libs.versions.ndk.get())
inputs.property("minSdk", libs.versions.minSdk.get())
inputs.property("rustFlags", rustFlags)
inputs.property("abis", listOf("arm64-v8a", "armeabi-v7a"))
inputs.property("releaseDebug", "2")
inputs.property(
"devDebug",
providers.environmentVariable("CARGO_PROFILE_DEV_DEBUG").orElse("cargo-default")
)
inputs.property(
"incremental",
providers.environmentVariable("CARGO_INCREMENTAL").orElse("cargo-default")
)
inputs.property(
"cargoTargetDirectory",
providers.environmentVariable("CARGO_TARGET_DIR").orElse("workspace-default")
)
outputs.dir(rawNative)
environment("RUSTUP_TOOLCHAIN", rustVersion)
environment("RUSTC", rustcExecutable.get())
environment("ANDROID_NDK_HOME", ndkDirectory.get().asFile.absolutePath)
environment("ANDROID_HOME", sdkDirectory.get().asFile.absolutePath)
environment(
"RUSTFLAGS",
"-D warnings -C link-arg=-Wl,-z,max-page-size=16384 -C link-arg=-Wl,-z,common-page-size=16384"
)
environment("RUSTFLAGS", rustFlags)
environment("CARGO_PROFILE_RELEASE_DEBUG", "2")
commandLine(
listOf(
cargoExecutable.get(), "+$rustVersion", "ndk",
"--target", "arm64-v8a",
"--target", "armeabi-v7a",
"--target", "x86_64",
"--platform", libs.versions.minSdk.get(),
"--output-dir", rawNative.get().asFile.absolutePath,
"build", "--locked", "--package", "ironstorage-android", "--lib"