本文使用CMake進行NDK開發!!!
學會NDK就可以把你寫或者別人寫的C和C++代碼在Android 下調用,可以大大提高性能和安全。
(注意)本文圖文齊全,絕對可以讓你輕鬆學會NDK開發的入門。注意Demo是Android Studio是自動生成的
一、概述
1.概述
Android 調c /c++代碼,是每一個Android工程師進階都要學的。本文簡單講解NDK入門。
我簡單講一下,接下要有到的東西。
NDK:Native Development Kit
,是 Android
的一個工具開發包 ,他屬於Android,JNI屬於Java
CMakeLists: 一款外部構建工具,可與 Gradle 搭配使用來構建原生庫。如果您只計劃使用 ndk-build,則不需要此組件。
LLDB是個開源的內置於XCode的具有REPL(read-eval-print-loop)特徵的Debugger,其可以安裝C++或者Python插件。
LLDB(這個我沒有太瞭解,所以我沒有下載)
2.環境配置
二、自動實現
1.新建項目:我建議你可以新建一個支持c++的Demo,來查看你的錯誤,做爲Demo查看。
Android Studio已經相對智能,可以自動創建完成。
其實到這裏Android調用c++已經完成了,運行一下,效果如下:
三、手動創建
接下來我們手動實現Android調用c/c++代碼的Demo,首先再創建一個項目,爲第一步。
這次我們不選擇c++的選項,一直Net到Finsh完成新建項目。
1.創建我們需要的文件
NdkUtil.java
CMakeLists.txt
cpp文件夾裏創建 native-lib.cpp
然後再一個個完善功能
1.把之前創建的文件寫好
NdkUtil:一個調用c++的工具類,用來實現調用c++代碼。注意這個類的類名和方法對c++的方法是有影響的
public class NdkUtil {
//靜態代碼,java最優先調用
static {
System.loadLibrary("native-lib");
}
//實現調用c++代碼
public native String getCString();
}
native-lib.cpp:這是一個c語言的代碼文件,如果你會c語言你可以自己寫。不懂c也沒有問題,你可以直接複製一下代碼
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jstring JNICALL
Java_com_example_ndk_1demo_NdkUtil_getCString(JNIEnv *env, jobject instance) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
CMakeLists.txt:用來配置Android調用c/c++
#這是個符號是註釋的意思
#這個是配置版本最低爲3.4.1
cmake_minimum_required(VERSION 3.4.1)
add_library(
# 設置庫的名稱。
native-lib
# 指定的NDK庫的名稱
# 你和我的一樣就行
SHARED
# 你的cpp路徑
src/main/cpp/native-lib.cpp)
2.鏈接c++項目和配置Gradle
右鍵 NdkUtil Link C++ project with Gradle
選擇你的 CMakeLists.txt 的路徑
如果你不知道,自己的CMakeLists.txt 在哪?你可以這樣找到文件目錄
3.實現
MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView mText = findViewById(R.id.text);
NdkUtil ndkUtil = new NdkUtil();
mText.setText(ndkUtil.getCString());
}
}
佈局文件
這樣基本就完成簡單NDK功能。