Google berkomitmen untuk mendorong terwujudnya keadilan rasial bagi komunitas Kulit Hitam. Lihat caranya.

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 Anda. Saat Anda membuat project, kode ini dikompilasi menjadi library native yang dapat dikemas oleh 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 Anda.

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 Anda.

Jika Anda 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 Anda.
    • 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 Anda ke 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 file skrip CMake atau ndk-build Anda. Gradle menggunakan skrip build untuk mengimpor kode sumber ke project Android Studio dan mengemas library native (file SO) ke APK.

Setelah mengonfigurasi project, Anda dapat mengakses fungsi native dari kode Java atau Kotlin menggunakan framework JNI. Untuk mem-build dan menjalankan aplikasi Anda, 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 add-on, seperti CCache. Jika tidak, Anda dapat terus menggunakan Gradle dan plugin Android versi eksperimental.

Mendownload NDK dan Fitur Build

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

  • Android Native Development Kit (NDK): seperangkat alat yang memungkinkan Anda menggunakan kode C dan C++ bersama Android, dan menyediakan library platform yang memungkinkan Anda mengelola aktivitas native dan mengakses komponen perangkat fisik, misalnya sensor dan input sentuh.
  • CMake: alat build eksternal yang bekerja bersama Gradle untuk membuat 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 menginstal komponen ini, lihat Menginstal dan mengonfigurasi NDK, CMake, dan LLDB.

Menggunakan CMake 3.6.0 atau 3.10.2

SDK Manager menyertakan CMake versi fork 3.6.0 dan versi 3.10.2. Project yang tidak menetapkan versi CMake tertentu di build.gradle akan dibuat dengan CMake 3.10.2. Untuk menggunakan versi yang disertakan sebelumnya, tentukan CMake versi 3.6.0 dalam file build.gradle modul Anda:

    android {
        ...
        externalNativeBuild {
            cmake {
                ...
                version "3.6.0"
            }
        }
    }
    
Meskipun bukan praktik terbaik, Anda dapat menetapkan versi CMake sebagai versi minimum dengan menambahkan tanda + pada bagian akhir entri build.gradle, seperti 3.10.2+.

Menggunakan versi CMake kustom

Jika Anda ingin menggunakan CMake versi 3.7 atau lebih tinggi yang tidak disertakan oleh SDK Manager, ikuti langkah-langkah berikut:

  1. Download dan instal CMake 3.7 atau yang lebih tinggi dari situs resmi CMake.
  2. Tetapkan versi CMake yang perlu digunakan oleh Gradle dalam file build.gradle modul Anda:
        android {
            ...
            externalNativeBuild {
                cmake {
                    ...
                    version "cmake-version"
                }
            }
        }
        
  3. Tambahkan jalur penginstalan CMake ke variabel lingkungan PATH atau sertakan dalam file local.properties project Anda seperti ditunjukkan di bawah ini. Jika Gradle tidak dapat menemukan versi CMake yang Anda tetapkan dalam file build.gradle, error build akan terjadi.
        # If you set this property, Gradle no longer uses PATH to find CMake.
        cmake.dir="path-to-cmake"
        
  4. Jika belum menginstal sistem build Ninja di workstation Anda, buka situs resmi Ninja, lalu download dan instal versi terbaru Ninja yang tersedia untuk OS Anda. Pastikan juga untuk menambahkan lokasi penginstalan Ninja ke variabel lingkungan PATH Anda.

Membuat project baru dengan dukungan C/C++

Membuat project baru dengan dukungan untuk 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 bidang lainnya di bagian wizard berikutnya.
  4. Klik Next.
  5. Di bagian Customize C++ Support di wizard, Anda dapat menyesuaikan project dengan bidang C++ Standard. Gunakan menu drop-down untuk memilih standardisasi C++ yang ingin Anda gunakan. 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, lalau pilih tampilan Android. Seperti 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 di disk, tetapi mengelompokkan file yang serupa untuk menyederhanakan navigasi project Anda.

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

Mirip dengan cara file build.gradle memberi tahu Gradle tentang cara membuat aplikasi Anda, CMake dan ndk-build membutuhkan skrip build untuk mengetahui cara membuat library native. Untuk project baru, Android Studio membuat skrip build CMake, CMakeLists.txt, dan menempatkannya di direktori utama modul Anda. 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 Anda. Ringkasan berikut menjelaskan peristiwa yang berlangsung untuk mem-build dan menjalankan aplikasi contoh:

  1. Gradle memanggil skrip build eksternal Anda, 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 oleh 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 Penganalisis APK:

  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 pada gambar 3, Anda dapat melihat libnative-lib.so di jendela Penganalisis APK di bawah lib/<ABI>/.

    Gambar 3. Menemukan library native menggunakan Penganalisis APK.

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 kumpulan sumber utama aplikasi, buatlah 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 utama, lalu pilih New > Directory.
    3. Masukkan cpp sebagai nama direktori dan klik OK.

  2. Klik kanan direktori cpp/, lalu pilih New > C/C++ Source File.
  3. Masukkan nama untuk file sumber Anda, misalnya native-lib.
  4. Dari menu drop-down Type, pilih ekstensi file untuk file sumber Anda, misalnya .cpp.
    • Anda dapat menambahkan jenis file lain ke menu drop-down, misalnya .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 perlu mengonfigurasi CMake untuk menyertakannya di library native Anda.

Referensi lainnya

Untuk mempelajari kode C/C++ pendukung di aplikasi Anda selengkapnya, coba referensi berikut.

Codelab