Dengan pembaruan Android Studio ke 1.0, dukungan toolchain NDK meningkat pesat ( catatan: baca pembaruan saya di bagian bawah posting ini untuk melihat penggunaan dengan plugin Gradle eksperimental baru dan Android Studio 1.5 ).
Android Studio dan NDK terintegrasi cukup baik sehingga Anda hanya perlu membuat blok ndk {} di build.gradle modul Anda, dan mengatur file sumber Anda ke dalam direktori (module) / src / main / jni - dan Anda selesai!
Tidak ada lagi ndk-build dari baris perintah.
Saya sudah menulis semua itu di posting blog saya di sini: http://www.sureshjoshi.com/mobile/android-ndk-in-android-studio-with-swig/
Poin yang menonjol adalah:
Ada dua hal yang perlu Anda ketahui di sini. Secara default, jika Anda memiliki lib eksternal yang ingin Anda muat ke dalam aplikasi Android, mereka dicari di (modul) / src / main / jniLibs secara default. Anda dapat mengubahnya dengan menggunakan pengaturan sourceSets.main.jniLibs.srcDirs di build.gradle modul Anda. Anda memerlukan subdirektori dengan pustaka untuk setiap arsitektur yang Anda targetkan (mis. X86, arm, mips, arm64-v8a, dll ...)
Kode yang Anda ingin dikompilasi secara default oleh toolchain NDK akan berlokasi di (module) / src / main / jni dan mirip dengan di atas, Anda dapat mengubahnya dengan mengatur sourceSets.main.jni.srcDirs di build.gradle modul Anda.
dan letakkan ini di build.gradle modul Anda:
ndk {
moduleName "SeePlusPlus" // Name of C++ module (i.e. libSeePlusPlus)
cFlags "-std=c++11 -fexceptions" // Add provisions to allow C++11 functionality
stl "gnustl_shared" // Which STL library to use: gnustl or stlport
}
Itulah proses mengkompilasi kode C ++ Anda, dari sana Anda perlu memuatnya, dan membuat pembungkus - tetapi menilai dari pertanyaan Anda, Anda sudah tahu bagaimana melakukan semua itu, jadi saya tidak akan memotong kembali.
Juga, saya telah menempatkan repo Github dari contoh ini di sini: http://github.com/sureshjoshi/android-ndk-swig-example
PEMBARUAN: 14 Juni 2015
Ketika Android Studio 1.3 keluar, harus ada dukungan yang lebih baik untuk C ++ melalui plugin JetBrains CLion. Saya saat ini dengan asumsi bahwa ini akan memungkinkan pengembangan Java dan C ++ dari dalam Android Studio; namun saya pikir kita masih harus menggunakan bagian Gradle NDK seperti yang telah saya nyatakan di atas. Selain itu, saya pikir masih akan ada kebutuhan untuk menulis file wrapper Java <-> C ++, kecuali CLion akan melakukannya secara otomatis.
PEMBARUAN: 5 Januari 2016
Saya telah memperbarui blog saya dan repo Github (di cabang pengembangan) untuk menggunakan Android Studio 1.5 dengan plugin Gradle eksperimental terbaru (0.6.0-alpha3).
http://www.sureshjoshi.com/mobile/android-ndk-in-android-studio-with-swig/
http://github.com/sureshjoshi/android-ndk-swig-example
Bangunan Gradle untuk bagian NDK sekarang terlihat seperti ini:
android.ndk {
moduleName = "SeePlusPlus" // Name of C++ module (i.e. libSeePlusPlus)
cppFlags.add("-std=c++11") // Add provisions to allow C++11 functionality
cppFlags.add("-fexceptions")
stl = "gnustl_shared" // Which STL library to use: gnustl or stlport
}
Selain itu, cukup mengagumkan, Android Studio memiliki pelengkapan otomatis untuk C ++ - pembungkus yang dihasilkan Java menggunakan kata kunci 'asli':
Namun, itu tidak sepenuhnya menyenangkan ... Jika Anda menggunakan SWIG untuk membungkus pustaka untuk menghasilkan kode secara otomatis, dan kemudian mencoba menggunakan pembuatan kata kunci asli bawaan, itu akan menempatkan kode di tempat yang salah di Swig Anda _wrap File .cxx ... Jadi Anda perlu memindahkannya ke blok "extern C":
PEMBARUAN: 15 Oktober 2017
Saya akan lalai jika saya tidak menyebutkan bahwa Android Studio 2.2 dan seterusnya pada dasarnya memiliki dukungan 'asli' (tanpa kata-kata) untuk toolchain NDK melalui Gradle dan CMake. Sekarang, ketika Anda membuat proyek baru, cukup pilih dukungan C ++ dan Anda siap melakukannya.
Anda masih perlu membuat kode layer JNI Anda sendiri, atau menggunakan teknik SWIG yang saya sebutkan di atas, tetapi perancah C ++ dalam proyek Android sepele sekarang.
Perubahan pada file CMakeLists (yang merupakan tempat Anda meletakkan file sumber C ++) akan diambil oleh Android Studio, dan itu akan secara otomatis mengkompilasi ulang pustaka terkait.