> 백엔드 개발 > C++ > gradle.build ndk {} DSL에서 LOCAL_SRC_FILES를 정의할 수 있나요?

gradle.build ndk {} DSL에서 LOCAL_SRC_FILES를 정의할 수 있나요?

Linda Hamilton
풀어 주다: 2024-11-29 00:54:11
원래의
598명이 탐색했습니다.

Can You Define LOCAL_SRC_FILES in the gradle.build ndk {} DSL?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿