Rumah >pembangunan bahagian belakang >C++ >Bolehkah saya mentakrifkan LOCAL_SRC_FILES dalam NDK DSL?

Bolehkah saya mentakrifkan LOCAL_SRC_FILES dalam NDK DSL?

DDD
DDDasal
2024-11-23 09:55:17342semak imbas

Can I define LOCAL_SRC_FILES in NDK DSL?

Boleh mentakrifkan LOCAL_SRC_FILES dalam NDK DSL?

Untuk mentakrifkan LOCAL_SRC_FILES dalam blok Gradle ndk{}, adalah penting untuk ambil perhatian bahawa ciri ini tidak disokong oleh pemalam Gradle semasa. Malah pemalam "percubaan" hanya membenarkan direktori ditambah.

Pendekatan Disyorkan

Menggunakan Android.mk tradisional disyorkan untuk melaksanakan tugas ini dengan pasti. Selain itu, meninggalkan jni.srcDirs sebagai [${jniSrc}] dicadangkan untuk membenarkan Android Studio memaparkan fail ini untuk akses mudah dan penyerlahan sintaks.

NDK Build Disabled

Jika Android tradisional. pendekatan mk tidak diingini, tugas binaan NDK biasa boleh dilumpuhkan dan tugas buildNative boleh disuntik sebaliknya:

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
}

Gradle Experimental Plugin

Untuk pemalam 'com.android.tools.build:gradle-experimental:0.2.0', pendekatan yang sama boleh diambil, tetapi dengan padanan tugas yang berbeza:

tasks.all {
    task ->
        if (task.name.startsWith('compile') && task.name.contains('MainC')) {
            task.enabled = false
        }
        if (task.name.startsWith('link')) {
            task.enabled = false
        }
        if (task.name.endsWith("SharedLibrary") ) {
            task.dependsOn buildNative
        }
}

Kecualikan Fail daripada NDK Bina

Dengan pemalam percubaan 0.4.0, fail boleh dikecualikan daripada binaan NDK mengikut corak:

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

Atas ialah kandungan terperinci Bolehkah saya mentakrifkan LOCAL_SRC_FILES dalam 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