Android NDK C++ Compiler: Panduan untuk Pengembang
Android NDK (Native Development Kit) memungkinkan pengembang untuk menulis kode native (C dan C++) untuk aplikasi Android mereka. Ini memberikan beberapa keuntungan, termasuk:
- Performa yang lebih baik: Kode native dapat berjalan lebih cepat daripada kode Java, terutama untuk tugas-tugas yang intensif komputasi.
- Akses ke fitur perangkat keras: NDK memungkinkan Anda untuk mengakses fitur perangkat keras yang tidak tersedia melalui API Java, seperti sensor dan hardware-specific APIs.
- Penggunaan kode yang sudah ada: Jika Anda memiliki kode C atau C++ yang sudah ada, Anda dapat menggunakannya kembali dalam aplikasi Android Anda.
Untuk menggunakan NDK, Anda perlu memahami cara mengkompilasi kode C++ Anda untuk Android. Ini melibatkan beberapa langkah:
1. Instalasi Android NDK
Anda dapat mengunduh dan menginstal NDK dari halaman pengembang Android:
2. Membuat Project Android Studio
Buat sebuah project baru di Android Studio dan tambahkan modul C++ ke project Anda.
3. Menulis Kode C++
Tulis kode C++ Anda di file .cpp yang terletak di folder "jni" dalam project Anda.
4. Menentukan File Build
Buat file Android.mk
di folder "jni" untuk menentukan bagaimana kode C++ Anda akan dikompilasi. File ini berisi instruksi untuk compiler, seperti:
- Nama modul: Nama modul C++ Anda.
- Sumber file: Daftar semua file .cpp yang akan dikompilasi.
- Library: Library tambahan yang diperlukan.
5. Menjalankan ndk-build
Gunakan command ndk-build
di terminal untuk membangun kode C++ Anda. Ini akan menghasilkan file library .so (shared object) yang dapat digunakan dalam aplikasi Android Anda.
6. Memanggil Kode Native dari Java
Gunakan System.loadLibrary()
untuk memuat library .so Anda dalam kode Java Anda. Setelah library dimuat, Anda dapat mengakses fungsi C++ dari kode Java Anda menggunakan JNI (Java Native Interface).
Contoh sederhana
Berikut ini adalah contoh sederhana untuk memahami cara memanggil fungsi C++ dari kode Java:
File: native-lib.cpp
#include
#include
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_myapplication_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
File: Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := native-lib
LOCAL_SRC_FILES := native-lib.cpp
include $(BUILD_SHARED_LIBRARY)
File: MainActivity.java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Example of a call to a native method
TextView tv = findViewById(R.id.sample_text);
tv.setText(stringFromJNI());
}
/**
* A native method that is implemented by the 'native-lib' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();
// Load the library on application startup.
static {
System.loadLibrary("native-lib");
}
}
Catatan:
- Anda perlu menambahkan
native-lib
sebagai modul native dalambuild.gradle
dan menyinkronkan project. - Anda perlu menambahkan dependency NDK di
build.gradle
:
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.0"
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
implementation "androidx.constraintlayout:constraintlayout:2.1.4"
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
//Dependency NDK
implementation 'com.android.tools.build:gradle:7.4.2'
Ini adalah pengenalan singkat tentang cara menggunakan Android NDK dan compiler C++. Anda dapat menemukan lebih banyak informasi tentang NDK dan JNI di dokumentasi resmi Android.