Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menentukan LOCAL_SRC_FILES dalam Android NDK DSL?

Bagaimana untuk Menentukan LOCAL_SRC_FILES dalam Android NDK DSL?

Susan Sarandon
Susan Sarandonasal
2024-11-16 04:11:03883semak imbas

How to Define LOCAL_SRC_FILES in Android NDK DSL?

Mentakrif LOCAL_SRC_FILES dalam NDK DSL

Android NDK DSL membolehkan anda menentukan fail sumber asli untuk modul anda. Walau bagaimanapun, dalam versi lama DSL, tiada cara langsung untuk mentakrif LOCAL_SRC_FILES secara manual.

Penyelesaian Plugin Eksperimen

Dengan pemalam Android Gradle 0.4.0 percubaan, anda kini boleh mengecualikan fail sumber daripada binaan NDK berdasarkan corak. Contohnya:

android.sources {
    main {
        jni.source {
            srcDirs = ["~/srcs/jni"]
            exclude "**/win.cpp"
        }
    }
}

Penyelesaian untuk Pemalam Lama

Malangnya, untuk versi DSL yang lebih lama, anda tidak boleh mentakrifkan LOCAL_SRC_FILES secara langsung. Sebaliknya, adalah disyorkan untuk menggunakan fail Android.mk tradisional untuk mengurus fail sumber asli anda.

Anda boleh melumpuhkan tugas binaan NDK lalai dan menyuntik tugas tersuai untuk menyusun fail sumber asli anda:

def ndkBuild = android.ndkDirectory
import org.apache.tools.ant.taskdefs.condition.Os
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
    ndkBuild += '.cmd'
}

task buildNative(type: Exec, description: 'Compile JNI source via NDK') {
    commandLine '$ndkBuild', 'NDK_PROJECT_PATH="$jniSrc/..'
}

task cleanNative(type: Exec, description: 'Clean JNI object files') {
    commandLine '$ndkBuild', 'clean', 'NDK_PROJECT_PATH="$jniSrc/..'
}
clean.dependsOn 'cleanNative'
tasks.withType(JavaCompile) {
    compileTask -> compileTask.dependsOn buildNative
}
tasks.all {
    task -> if (task.name.contains('compileDebugNdk') || task.name.contains('compileReleaseNdk')) task.enabled = false
}

Kaveat

Perhatikan bahawa penyelesaian ini mungkin tidak menghasilkan persediaan boleh nyahpepijat. Untuk menangani perkara ini, anda boleh membina perpustakaan statik dengan ndk-build dan memautkannya dengan objek yang diperlukan untuk menarik simbol daripada perpustakaan.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan LOCAL_SRC_FILES dalam Android NDK DSL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn