takrif LOCAL_SRC_FILES dalam NDK
Soalan:
Adakah mungkin untuk membina ndk dalam gradle . {} Takrifkan LOCAL_SRC_FILES dalam DSL?
Latar Belakang:
Dalam fail gradle.build modul jni, gunakan konfigurasi berikut:
android { def jniSrc = System.getProperty("user.home") + "/srcs/jni" defaultConfig { ndk { moduleName "core" stl "gnustl_shared" cFlags "-std=c++11" } } ...
Kod sumber jni mengandungi arahan untuk kod platform yang berbeza (Android, iOS, WinRT). Matlamatnya adalah untuk mengecualikan kod dalam Android.mk yang tidak berfungsi pada Android.
Jawapan:
Malangnya, pemalam gradle semasa tidak menyokong penentuan LOCAL_SRC_FILES dalam ndk {} DSL. Berikut ialah penyelesaiannya:
Kaedah tradisional:
Simpan fail Android.mk tradisional, yang boleh mengecualikan kod tertentu dengan pasti. Adalah disyorkan untuk menggunakan tetapan cppFlags dan cFlags untuk mempunyai petikan kod dan penyerlahan sintaks dalam Android Studio.
Pendekatan eksperimen (tugas buildNative):
Lumpuhkan tugas binaan NDK biasa dan masukkan tugas buildNative untuk membina kod asli. Ini berfungsi untuk pemalam percubaan 'com.android.tools.build:gradle-experimental:0.2.0'.
Pendekatan lanjutan (pustaka statik):
Jika kod asli anda dibahagikan kepada berbilang direktori (fail khusus Android dan fail bebas platform), anda boleh mempertimbangkan untuk membina statik library , dan pautkannya untuk mendapatkan simbol yang diperlukan. Pendekatan ini membolehkan membina perpustakaan statik menggunakan ndk-build dan menggunakannya dengan objek yang diperlukan pada masa pautan.
Kemas kini:
Dalam pemalam percubaan, anda boleh menggunakan compileJavaTask.dependsOn buildNative untuk menggantikan tugas compileTask.dependsOn buildNative.
Kemas kini 2:
Adalah mungkin untuk memautkan satu fail sumber tempatan ke projek Android Studio, sekali gus menyelesaikan isu tersebut.
Atas ialah kandungan terperinci Bolehkah Anda Tentukan LOCAL_SRC_FILES dalam gradle.build ndk {} DSL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!