mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 02:29:55 +02:00
fix(android): package native core for x86_64
This commit is contained in:
5
.github/workflows/shared-kmp.yml
vendored
5
.github/workflows/shared-kmp.yml
vendored
@@ -63,7 +63,7 @@ jobs:
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@stable
|
||||
with:
|
||||
targets: aarch64-apple-darwin,aarch64-linux-android
|
||||
targets: aarch64-apple-darwin,aarch64-linux-android,x86_64-linux-android
|
||||
|
||||
- name: Cache Cargo
|
||||
uses: actions/cache@v4
|
||||
@@ -96,3 +96,6 @@ jobs:
|
||||
|
||||
- name: Run shared JVM tests
|
||||
run: ./gradlew :shared:jvmTest --no-daemon --stacktrace
|
||||
|
||||
- name: Verify Android native libraries
|
||||
run: ./gradlew :androidApp:verifyDebugVnidropLibraries --no-daemon --stacktrace
|
||||
|
||||
@@ -1,4 +1,34 @@
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.file.RegularFileProperty
|
||||
import org.gradle.api.provider.SetProperty
|
||||
import org.gradle.api.tasks.Input
|
||||
import org.gradle.api.tasks.InputFile
|
||||
import org.gradle.api.tasks.PathSensitive
|
||||
import org.gradle.api.tasks.PathSensitivity
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
import java.util.zip.ZipFile
|
||||
|
||||
abstract class VerifyVnidropLibrariesTask : DefaultTask() {
|
||||
@get:InputFile
|
||||
@get:PathSensitive(PathSensitivity.RELATIVE)
|
||||
abstract val apk: RegularFileProperty
|
||||
|
||||
@get:Input
|
||||
abstract val requiredLibraries: SetProperty<String>
|
||||
|
||||
@TaskAction
|
||||
fun verify() {
|
||||
ZipFile(apk.get().asFile).use { archive ->
|
||||
val missing = requiredLibraries.get().filter { path ->
|
||||
archive.getEntry(path)?.size?.takeIf { it > 0L } == null
|
||||
}
|
||||
check(missing.isEmpty()) {
|
||||
"Debug APK has missing or empty VniDrop libraries: ${missing.joinToString()}"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
alias(libs.plugins.androidApplication)
|
||||
@@ -37,7 +67,10 @@ android {
|
||||
excludes += "/META-INF/{AL2.0,LGPL2.1}"
|
||||
}
|
||||
jniLibs {
|
||||
pickFirsts += "lib/arm64-v8a/libvnidrop.so"
|
||||
pickFirsts += setOf(
|
||||
"lib/arm64-v8a/libvnidrop.so",
|
||||
"lib/x86_64/libvnidrop.so",
|
||||
)
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
@@ -52,12 +85,33 @@ android {
|
||||
sourceSets {
|
||||
getByName("debug") {
|
||||
jniLibs.srcDir(project(":shared").layout.buildDirectory.dir("intermediates/rust/aarch64-linux-android/debug"))
|
||||
jniLibs.srcDir(project(":shared").layout.buildDirectory.dir("intermediates/rust/x86_64-linux-android/debug"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
tasks.configureEach {
|
||||
if (name == "mergeDebugJniLibFolders" || name == "mergeDebugNativeLibs") {
|
||||
dependsOn(":shared:copyAndroidAndroidArm64Debug")
|
||||
dependsOn(
|
||||
":shared:copyAndroidAndroidArm64Debug",
|
||||
":shared:copyAndroidAndroidX64Debug",
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
val verifyDebugVnidropLibraries = tasks.register<VerifyVnidropLibrariesTask>("verifyDebugVnidropLibraries") {
|
||||
group = "verification"
|
||||
description = "Verifies that the debug APK packages VniDrop for every supported Android ABI."
|
||||
dependsOn("assembleDebug")
|
||||
apk.set(layout.buildDirectory.file("outputs/apk/debug/androidApp-debug.apk"))
|
||||
requiredLibraries.set(
|
||||
setOf(
|
||||
"lib/arm64-v8a/libvnidrop.so",
|
||||
"lib/x86_64/libvnidrop.so",
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
tasks.named("check") {
|
||||
dependsOn(verifyDebugVnidropLibraries)
|
||||
}
|
||||
|
||||
@@ -184,7 +184,7 @@ val hostCargoTargets = buildSet<RustTarget> {
|
||||
cargo {
|
||||
packageDirectory = layout.projectDirectory.dir("../crates/vnidrop")
|
||||
publishJvmArtifacts = true
|
||||
androidTargetsToBuild.set(setOf(RustAndroidTarget.Arm64))
|
||||
androidTargetsToBuild.set(setOf(RustAndroidTarget.Arm64, RustAndroidTarget.X64))
|
||||
builds.jvm {
|
||||
variants {
|
||||
// Desktop distributions are built per host. Do not publish disabled
|
||||
|
||||
Reference in New Issue
Block a user