mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 10:29:58 +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
|
- name: Install Rust toolchain
|
||||||
uses: dtolnay/rust-toolchain@stable
|
uses: dtolnay/rust-toolchain@stable
|
||||||
with:
|
with:
|
||||||
targets: aarch64-apple-darwin,aarch64-linux-android
|
targets: aarch64-apple-darwin,aarch64-linux-android,x86_64-linux-android
|
||||||
|
|
||||||
- name: Cache Cargo
|
- name: Cache Cargo
|
||||||
uses: actions/cache@v4
|
uses: actions/cache@v4
|
||||||
@@ -96,3 +96,6 @@ jobs:
|
|||||||
|
|
||||||
- name: Run shared JVM tests
|
- name: Run shared JVM tests
|
||||||
run: ./gradlew :shared:jvmTest --no-daemon --stacktrace
|
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 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 {
|
plugins {
|
||||||
alias(libs.plugins.androidApplication)
|
alias(libs.plugins.androidApplication)
|
||||||
@@ -37,7 +67,10 @@ android {
|
|||||||
excludes += "/META-INF/{AL2.0,LGPL2.1}"
|
excludes += "/META-INF/{AL2.0,LGPL2.1}"
|
||||||
}
|
}
|
||||||
jniLibs {
|
jniLibs {
|
||||||
pickFirsts += "lib/arm64-v8a/libvnidrop.so"
|
pickFirsts += setOf(
|
||||||
|
"lib/arm64-v8a/libvnidrop.so",
|
||||||
|
"lib/x86_64/libvnidrop.so",
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
@@ -52,12 +85,33 @@ android {
|
|||||||
sourceSets {
|
sourceSets {
|
||||||
getByName("debug") {
|
getByName("debug") {
|
||||||
jniLibs.srcDir(project(":shared").layout.buildDirectory.dir("intermediates/rust/aarch64-linux-android/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 {
|
tasks.configureEach {
|
||||||
if (name == "mergeDebugJniLibFolders" || name == "mergeDebugNativeLibs") {
|
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 {
|
cargo {
|
||||||
packageDirectory = layout.projectDirectory.dir("../crates/vnidrop")
|
packageDirectory = layout.projectDirectory.dir("../crates/vnidrop")
|
||||||
publishJvmArtifacts = true
|
publishJvmArtifacts = true
|
||||||
androidTargetsToBuild.set(setOf(RustAndroidTarget.Arm64))
|
androidTargetsToBuild.set(setOf(RustAndroidTarget.Arm64, RustAndroidTarget.X64))
|
||||||
builds.jvm {
|
builds.jvm {
|
||||||
variants {
|
variants {
|
||||||
// Desktop distributions are built per host. Do not publish disabled
|
// Desktop distributions are built per host. Do not publish disabled
|
||||||
|
|||||||
Reference in New Issue
Block a user