gradle.build의 ndk {} DSL 블록 내에서 LOCAL_SRC_FILES를 정의해야 할 수도 있습니다. 네이티브 코드가 포함된 Android Studio 프로젝트로 작업할 때 파일입니다. 이는 현재 Gradle 플러그인에서 기본적으로 지원되지 않지만 유사한 기능을 달성하기 위한 여러 접근 방식이 있습니다.
이전 버전의 Gradle에서는 원치 않는 플러그인을 제외하여 이 문제를 해결할 수 있습니다. 빌드 프로세스의 소스 파일. 그러나 이 접근 방식을 사용하려면 일반 NDK 빌드 작업을 비활성화하고 사용자 정의 작업을 정의해야 했습니다.
Gradle의 실험적 플러그인(com.android.tools.build:gradle- 실험적:0.4.0) 이제 패턴을 기반으로 NDK 빌드에서 파일을 제외할 수 있습니다. 이렇게 하려면 다음 구문을 사용하세요.
android.sources { main { jni.source { srcDirs = ["~/srcs/jni"] exclude "**/win.cpp" } } }
이렇게 하면 NDK 빌드에서 Android를 대상으로 하는 동안 다른 플랫폼(예: iOS, WinRT)용 파일과 같은 특정 파일을 제외할 수 있습니다.
디버깅 가능한 설정이 필요한 경우 해결 방법에는 ndk-build를 사용하여 정적 라이브러리를 구축하고 필요한 기호를 제공하기 위해 필요한 개체와 연결합니다. 이 접근 방식을 사용하려면 기본 소스를 플랫폼별 파일과 플랫폼 독립적인 파일로 분할해야 합니다.
build.gradle 파일에서:
task buildStaticLib(type: Exec, description: 'Compile Static lib via NDK') { commandLine "$ndkBuild", "$staticLibPath", "NDK_PROJECT_PATH=~/srcs", "NDK_OUT=$ndkOut", "APP_ABI=$appAbi", "APP_STL=gnustl_static" } tasks.all { task -> if (task.name.startsWith('link')) { task.dependsOn buildStaticLib } } model { android.ndk { moduleName = "hello-jni" abiFilters += "$appAbi".toString() ldFlags += "$staticLib".toString() ldLibs += "log" cppFlags += "-std=c++11" } android.sources { main.jni.source { srcDirs = ["~/srcs/jni"] } } }
~/srcs/Android.mk에서:
LOCAL_PATH := $(call my-dir)/.. include $(CLEAR_VARS) LOCAL_MODULE := staticLib LOCAL_SRC_FILES := HelloJni.cpp LOCAL_CPPFLAGS += -std=c++11 include $(BUILD_STATIC_LIBRARY)
또는 외부 도구 사용을 고려할 수 있습니다. CMake 또는 Buck과 같은 도구를 사용하여 네이티브 코드 빌드 프로세스를 관리하고 이를 Gradle과 통합할 수 있습니다. 이 접근 방식은 컴파일 및 연결 프로세스에 대한 더 많은 유연성과 제어 기능을 제공합니다.
위 내용은 Android Gradle의 ndk {} DSL 내에서 LOCAL_SRC_FILES를 정의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!