NDK에서 LOCAL_SRC_FILES 정의
질문:
gradle에서 ndk를 빌드하는 것이 가능합니까? . {} DSL에서 LOCAL_SRC_FILES를 정의하시겠습니까?
배경:
jni 모듈 gradle.build 파일에서 다음 구성을 사용합니다.
android { def jniSrc = System.getProperty("user.home") + "/srcs/jni" defaultConfig { ndk { moduleName "core" stl "gnustl_shared" cFlags "-std=c++11" } } ...
jni 소스 코드에는 다음에 대한 지침이 포함되어 있습니다. 다양한 플랫폼(Android, iOS, WinRT) 코드. 목표는 Android에서 작동하지 않는 Android.mk의 코드를 제외하는 것입니다.
답변:
안타깝게도 현재 Gradle 플러그인은 ndk {} DSL에서 LOCAL_SRC_FILES 정의를 지원하지 않습니다. 해결 방법은 다음과 같습니다.
기존 방법:
특정 코드를 안정적으로 제외할 수 있는 기존 Android.mk 파일을 유지합니다. Android Studio에서 코드 인용 및 구문 강조 표시를 위해 cppFlags 및 cFlags 설정을 사용하는 것이 좋습니다.
실험적 접근 방식(buildNative 작업):
일반 NDK 빌드 작업을 비활성화하고 buildNative 작업을 삽입하여 네이티브 코드를 빌드합니다. 이는 실험용 플러그인 'com.android.tools.build:gradle-experimental:0.2.0'에서 작동합니다.
고급 접근 방식(정적 라이브러리):
네이티브 코드가 여러 디렉터리(Android 특정 파일 및 플랫폼 독립적 파일)로 나누어져 있는 경우 정적 라이브러리 구축을 고려할 수 있습니다. library 를 연결하고 필요한 기호를 얻으려면 연결하세요. 이 접근 방식을 사용하면 ndk-build를 사용하여 정적 라이브러리를 구축하고 이를 링크 타임에 필요한 객체와 함께 사용할 수 있습니다.
업데이트:
실험용 플러그인에서는 compileJavaTask.dependentOn buildNative를 사용하여 compileTask.dependentOn buildNative 작업을 대체할 수 있습니다.
업데이트 2:
단일 로컬 소스 파일을 Android Studio 프로젝트에 연결하여 문제를 해결할 수 있습니다.
위 내용은 gradle.build ndk {} DSL에서 LOCAL_SRC_FILES를 정의할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!