Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mengecualikan Fail daripada LOCAL_SRC_FILES dalam DSL Gradle NDK?

Bagaimanakah Saya Boleh Mengecualikan Fail daripada LOCAL_SRC_FILES dalam DSL Gradle NDK?

DDD
DDDasal
2024-11-27 06:57:10632semak imbas

How Can I Exclude Files from LOCAL_SRC_FILES in the NDK Gradle DSL?

Memintas LOCAL_SRC_FILES dalam NDK DSL Dengan Corak Pengecualian

Soalan:

Bolehkah LOCAL_SRC_FILES ditakrifkan dalam blok NDK Gradle?

Jawapan Asal (Ditamatkan):

Pada masa ini, ciri ini tidak disokong oleh pemalam Gradle. Pertimbangkan untuk menggunakan fail Android.mk tradisional.

Jawapan Kemas Kini:

Dengan keluaran pemalam Gradle 0.4.0, ini kini boleh dilakukan menggunakan corak pengecualian.

android.sources {
    main {
        jni.source {
            srcDirs = ["~/srcs/jni"]
            exclude "**/win.cpp"
        }
    }
}

Penyelesaian Alternatif dengan Statik Pustaka:

Untuk mengecualikan fail daripada binaan NDK tanpa menggunakan LOCAL_SRC_FILES, pendekatan berbeza boleh diambil.

  1. Buat perpustakaan statik yang mengandungi fail yang dikecualikan.
  2. Ubah suai build.gradle untuk bergantung pada statik perpustakaan:
model {
    android.ndk {
        moduleName = "hello-jni"
        abiFilters += "$appAbi".toString()
        ldFlags += "$staticLib".toString()
        ldLibs += "log"
        cppFlags += "-std=c++11"
    }
}
  1. Tentukan perpustakaan statik dalam Android.mk:
LOCAL_MODULE    := staticLib
LOCAL_SRC_FILES := HelloJni.cpp

LOCAL_CPPFLAGS += -std=c++11

include $(BUILD_STATIC_LIBRARY)

Pendekatan ini secara berkesan mengecualikan fail yang ditentukan daripada binaan NDK biasa dan memastikan simbol yang diperlukan tersedia untuk penyahpepijatan.

Nota: Ingat untuk mencetuskan "Bina/Bersihkan" selepas mengubah suai tetapan pengecualian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengecualikan Fail daripada LOCAL_SRC_FILES dalam DSL Gradle NDK?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn