Gradle ndk{} 블록에서 LOCAL_SRC_FILES를 정의하려면 이 기능이 지원되지 않는다는 점에 유의하는 것이 중요합니다. 현재 Gradle 플러그인. "실험용" 플러그인도 디렉토리 추가만 허용합니다.
이 작업을 안정적으로 수행하려면 기존 Android.mk를 사용하는 것이 좋습니다. 또한, jni.srcDirs를 [${jniSrc}]로 남겨두면 Android Studio에서 쉽게 액세스하고 구문 강조 표시를 위해 이러한 파일을 표시할 수 있습니다.
기존 Android의 경우. mk 접근 방식은 바람직하지 않습니다. 일반 NDK 빌드 작업을 비활성화하고 buildNative 작업을 삽입할 수 있습니다. 대신:
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 }
'com.android.tools.build:gradle-experimental:0.2.0' 플러그인의 경우 비슷한 접근 방식을 취할 수 있지만 다른 작업 일치:
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 } }
실험용 플러그인 0.4.0을 사용하면 다음 패턴에 따라 NDK 빌드에서 파일을 제외할 수 있습니다.
android.sources { main { jni.source { srcDirs = ["~/srcs/jni"] exclude "**/win.cpp" } } }
위 내용은 NDK DSL에서 LOCAL_SRC_FILES를 정의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!