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.
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.
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 }
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 } }
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!