Android Studio 2.2 NDK入門(一) 官方DEMO解析

AS 新版本對NDK 的支持更加友好和方便


跟著我左手右手一個慢動作,開始官方的NDK DEMO

step1: 環境設置:打開AS設置(ctrl+alt+s或者AS右上角->File->Setting)
NDK setting.png
step2: new project
select c++ support.png
step3: 一路next,最后完成前有個C++ standard,需要勾選兩個選項:
C++ standard.png
step4: 解析目錄結構

MainActivity.java中已經存在了一個native的函數public native String stringFromJNI();
該函數就是一個用C++實現的接口,該庫為默認生產的nativa-lib

工程目錄結構中,有兩個重要的文件夾/package:

工程目錄結構.png

CPP文件夾類似與之前的jni文件夾,其實是一個意思,存放c/c++的文件目錄
CMakeLists.txt的作用和Android.mk類似,也類似與makefile文件,是Gradle編譯鏈接.so庫的申明文件,通過它可以實現link

native-lib.cpp中實現了public native String stringFromJNI();

具體為:

extern "C"
JNIEXPORT jstring JNICALL
Java_com_example_mobaolibo_jni_MainActivity_stringFromJNI(
        JNIEnv *env,
        jobject /* this */) {
    std::string hello = "Halo,C++";
    return env->NewStringUTF(hello.c_str());
}
step5: 編譯

運行之后在模擬器中能看到中間的text顯示Halo,C++

稍微爬個階

native-lib.cpp中的函數名稱為Java_com_xx_func
實際上,該命名方式為Java_class_package_name_func:class_package_name對應實現native類的包名,func為函數名

該命名可以由javah自動生成。有兩種方式實現
1.較笨的方法:進入工程目錄app\build\intermediates\classes\debug,使用javah命令:

javah -d jni class.package.ClassName

2.在AS中配置javah

ctrl+alt+s打開setting,在Tools下找到External Tools
點擊加號+添加
其中Parameters,有多種配置方法,可以百度之。反正我試了幾種,均沒有成功過,直接使用第一種方式
配置好之后,在project樹中右鍵能看到
javah.png
使用javah.png

簡單的解析就先這樣。因為水平有限,各位看官如有任何疑問和建議請啪啪打臉。
下一篇為增量更新的應用:http://www.lxweimin.com/p/867403e3eff1

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容