Android NDK(Native Development Kit)允許開發者使用C++編寫Android應用程序的部分代碼。要在Android NDK中調用C++庫,你需要遵循以下步驟:
build.gradle
文件中,你需要配置項目以支持C++。這通常涉及到添加externalNativeBuild
部分,并指定C++編譯器和鏈接器的路徑。例如:android {
...
defaultConfig {
...
externalNativeBuild {
cmake {
cppFlags ""
}
}
}
buildTypes {
...
}
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
}
}
}
src/main/cpp
。然后,你可以編寫C++代碼并使用你需要的庫。src/main/cpp
目錄下創建一個CMakeLists.txt
文件,該文件定義了如何編譯你的C++代碼。例如:cmake_minimum_required(VERSION 3.4.1)
add_library(native-lib SHARED src/main/cpp/native-lib.cpp)
find_library(log-lib log)
target_link_libraries(native-lib ${log-lib})
在這個例子中,我們創建了一個名為native-lib
的共享庫,并鏈接了log
庫。
6. 在Java代碼中調用C++庫:
在你的Java代碼中,你可以使用native
關鍵字聲明一個本地方法,然后在C++代碼中實現這個方法。例如,在Java中:
public class MainActivity extends AppCompatActivity {
// 聲明本地方法
public native String stringFromJNI();
// 加載庫
static {
System.loadLibrary("native-lib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 調用本地方法
String result = stringFromJNI();
Log.d("MainActivity", "Result from C++: " + result);
}
}
在C++代碼中:
#include <jni.h>
#include <string>
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());
}
請注意,這只是一個基本的示例,實際的項目可能需要更復雜的配置和錯誤處理。你應該查閱Android NDK和CMake的官方文檔以獲取更多詳細信息和示例。