Menambahkan kode C dan C++ ke project Anda

Anda dapat menambahkan kode C dan C++ ke project Android dengan menempatkan kode ke direktori cpp di modul project. Saat membuat project, kode ini dikompilasi menjadi library native yang dapat dipaketkan Gradle dengan APK Anda. Kode Java atau Kotlin Anda kemudian dapat memanggil fungsi di library native melalui Java Native Interface (JNI). Untuk mempelajari penggunaan framework JNI lebih lanjut, baca Tips JNI untuk Android.

Android Studio mendukung CMake, yang bagus untuk project lintas platform, dan ndk-build, yang dapat lebih cepat dari CMake tetapi hanya mendukung Android. Penggunaan CMake dan ndk-build dalam modul yang sama saat ini tidak didukung.

Jika Anda ingin mengimpor library ndk-build yang ada ke project Android Studio, pelajari cara menautkan Gradle ke project library native.

Halaman ini menunjukkan cara menyiapkan Android Studio dengan alat build yang diperlukan, membuat project baru dengan dukungan C/C++, dan menambahkan file C/C++ baru ke project.

Jika ingin menambahkan kode native ke project yang ada, Anda harus mengikuti langkah-langkah berikut:

  1. Buat file sumber native baru, lalu tambahkan ke project Android Studio.
    • Langkah ini dapat dilewati jika Anda sudah memiliki kode native atau ingin mengimpor library native bawaan.
  2. Konfigurasikan CMake agar mem-build kode sumber native ke dalam library. Anda juga memerlukan skrip build ini jika mengimpor dan menautkan ke library platform atau bawaan.
    • Jika memiliki library native yang sudah memiliki skrip build CMakeLists.txt, atau menggunakan ndk-build dan menyertakan skrip build Android.mk, Anda dapat melewati langkah ini.
  3. Konfigurasikan Gradle dengan menyediakan jalur ke file skrip CMake atau ndk-build. Gradle menggunakan skrip build untuk mengimpor kode sumber ke project Android Studio dan memaketkan library native (file SO) ke dalam APK.

Setelah mengonfigurasi project, Anda dapat mengakses fungsi native dari kode Java atau Kotlin menggunakan framework JNI. Untuk mem-build dan menjalankan aplikasi, cukup klik Run jalankan kemudian jalankan aplikasi dari panel menu.

Catatan: Jika project yang ada menggunakan alat ndkCompile yang tidak digunakan lagi, Anda harus melakukan migrasi untuk menggunakan CMake atau ndk-build. Untuk mempelajari lebih lanjut, buka bagian tentang cara Melakukan migrasi dari ndkCompile.

Perhatian bagi pengguna Gradle versi eksperimental: Pertimbangkan untuk melakukan migrasi ke plugin versi 2.2.0 atau yang lebih tinggi, dan menggunakan CMake atau ndk-build untuk mem-build library native jika salah satu dari hal-hal berikut berlaku bagi Anda: Project native Anda sudah menggunakan CMake atau ndk-build; Anda lebih suka menggunakan sistem build Gradle versi stabil; atau Anda menginginkan dukungan untuk alat tambahan, seperti CCache. Jika tidak, Anda dapat terus menggunakan Gradle versi eksperimental dan plugin Android.

Mendownload NDK dan alat build

Untuk mengompilasi dan men-debug kode native aplikasi, Anda memerlukan komponen berikut:

  • Android Native Development Kit (NDK): kumpulan alat yang memungkinkan Anda menggunakan kode C dan C++ bersama Android, serta menyediakan library platform yang memungkinkan Anda mengelola aktivitas native dan mengakses komponen perangkat fisik, seperti input sentuh dan sensor.
  • CMake: alat build eksternal yang bekerja bersama Gradle untuk mem-build library native. Anda tidak memerlukan komponen ini jika hanya berencana menggunakan ndk-build.
  • LLDB: debugger yang digunakan Android Studio untuk men-debug kode native.

Untuk informasi tentang cara menginstal komponen ini, lihat Menginstal dan mengonfigurasi NDK, CMake, dan LLDB.

Membuat project baru dengan dukungan C/C++

Membuat project baru yang mendukung kode native mirip dengan membuat project Android Studio lainnya, tetapi ada langkah tambahan:

  1. Di bagian Choose your project di wizard, pilih jenis project Native C++.
  2. Klik Next.
  3. Lengkapi semua kolom lainnya di bagian wizard berikutnya.
  4. Klik Next.
  5. Di bagian Customize C++ Support di wizard, Anda dapat menyesuaikan project dengan kolom C++ Standard. Gunakan menu drop-down untuk memilih standardisasi C++ yang ingin digunakan. Memilih Toolchain Default akan menggunakan setelan CMake default.
  6. Klik Finish.

Setelah Android Studio menyelesaikan pembuatan project baru, buka panel Project dari sisi kiri IDE, lalu pilih tampilan Android. Seperti ditampilkan dalam gambar 2, Android Studio akan menambahkan grup cpp:

Gambar 2. Grup tampilan Android untuk sumber native dan skrip build eksternal.

Catatan: Tampilan ini tidak mencerminkan hierarki file sesungguhnya pada disk, tetapi mengelompokkan file yang serupa untuk menyederhanakan navigasi project.

Dalam grup cpp, Anda dapat menemukan semua file sumber native, header, skrip build untuk CMake atau ndk-build, dan library bawaan yang merupakan bagian dari project. Untuk project baru, Android Studio membuat file sumber C++ contoh, native-lib.cpp, dan menempatkannya di direktori src/main/cpp/ modul aplikasi. Kode contoh ini memberikan fungsi C++ sederhana, stringFromJNI(), yang menampilkan string "Hello from C++". Anda dapat mempelajari cara menambahkan file sumber tambahan ke project di bagian Membuat file sumber native baru.

Mirip dengan cara file build.gradle memberi tahu Gradle tentang cara mem-build aplikasi, CMake dan ndk-build membutuhkan skrip build untuk mengetahui cara mem-build library native. Untuk project baru, Android Studio membuat skrip build CMake, CMakeLists.txt, dan menempatkannya di direktori utama modul. Untuk mempelajari konten skrip build ini lebih lanjut, baca Mengonfigurasi CMake.

Mem-build dan menjalankan aplikasi contoh

Saat Anda mengklik Run jalankan kemudian jalankan aplikasi dari panel menu, Android Studio akan mem-build dan meluncurkan aplikasi yang menampilkan teks “Hello from C++” di perangkat Android atau emulator. Ringkasan berikut menjelaskan peristiwa yang berlangsung untuk mem-build dan menjalankan aplikasi contoh:

  1. Gradle memanggil skrip build eksternal, CMakeLists.txt.
  2. CMake mengikuti perintah dalam skrip build untuk mengompilasi file sumber C++, native-lib.cpp, menjadi library objek bersama dan menamainya dengan libnative-lib.so, yang kemudian dipaketkan Gradle menjadi APK.
  3. Selama waktu proses, MainActivity aplikasi akan memuat library native menggunakan System.loadLibrary(). Fungsi native library, stringFromJNI(), kini tersedia untuk aplikasi.
  4. MainActivity.onCreate() memanggil stringFromJNI(), yang menampilkan "Hello from C++" dan menggunakannya untuk mengupdate TextView.

Catatan: Instant Run tidak kompatibel dengan komponen project yang ditulis dalam kode native.

Jika ingin memverifikasi apakah Gradle memaketkan library native dalam APK, Anda dapat menggunakan APK Analyzer:

  1. Pilih Build > Build Bundles(s) / APK(s) > Build APK(s)
  2. Pilih Build > Analyze APK.
  3. Pilih APK dari direktori app/build/outputs/apk/, lalu klik OK.
  4. Seperti ditampilkan dalam gambar 3, Anda dapat melihat libnative-lib.so di jendela APK Analyzer di bawah lib/<ABI>/.

    Gambar 3. Menemukan library native menggunakan APK Analyzer.

Tips: Jika Anda ingin bereksperimen dengan aplikasi Android lainnya yang menggunakan kode native, klik File > New > Import Sample, lalu pilih project contoh dari daftar Ndk.

Membuat file sumber C/C++ yang baru

Untuk menambahkan file sumber C/C++ baru ke project yang ada, lakukan langkah berikut:

  1. Jika Anda belum memiliki direktori cpp/ dalam set sumber utama aplikasi, buat dengan cara berikut:
    1. Buka panel Project dari sisi kiri IDE, lalu pilih tampilan Project dari menu drop-down.
    2. Buka your-module > src, klik kanan direktori main, lalu pilih New > Directory.
    3. Masukkan cpp sebagai nama direktori, lalu klik OK.

  2. Klik kanan direktori cpp/, lalu pilih New > C/C++ Source File.
  3. Masukkan nama untuk file sumber, seperti native-lib.
  4. Dari menu drop-down Type, pilih ekstensi file untuk file sumber, seperti .cpp.
    • Anda dapat menambahkan jenis file lain ke menu drop-down, seperti .cxx atau .hxx, dengan mengklik Edit File Types . Dalam kotak dialog C/C++ yang muncul, pilih ekstensi file lainnya dari menu drop-down Source Extension dan Header Extension, lalu klik OK.
  5. Jika Anda juga ingin membuat file header, centang kotak Create an associated header.
  6. Klik OK.

Setelah menambahkan file C/C++ baru ke project, Anda masih harus mengonfigurasi CMake untuk menyertakannya di library native.

Referensi lainnya

Untuk mempelajari kode C/C++ pendukung di aplikasi lebih lanjut, coba lihat referensi berikut.

Codelab