AS 新版本對(duì)NDK 的支持更加友好和方便
跟著我左手右手一個(gè)慢動(dòng)作,開(kāi)始官方的NDK DEMO
step1: 環(huán)境設(shè)置:打開(kāi)AS設(shè)置(ctrl+alt+s或者AS右上角->File->Setting)

step2: new project

step3: 一路next,最后完成前有個(gè)C++ standard,需要勾選兩個(gè)選項(xiàng):

step4: 解析目錄結(jié)構(gòu)
MainActivity.java中已經(jīng)存在了一個(gè)native的函數(shù)public native String stringFromJNI();
該函數(shù)就是一個(gè)用C++實(shí)現(xiàn)的接口,該庫(kù)為默認(rèn)生產(chǎn)的nativa-lib
工程目錄結(jié)構(gòu)中,有兩個(gè)重要的文件夾/package:

CPP文件夾類(lèi)似與之前的jni文件夾,其實(shí)是一個(gè)意思,存放c/c++的文件目錄
CMakeLists.txt的作用和Android.mk類(lèi)似,也類(lèi)似與makefile文件,是Gradle編譯鏈接.so庫(kù)的申明文件,通過(guò)它可以實(shí)現(xiàn)link
native-lib.cpp中實(shí)現(xiàn)了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: 編譯
運(yùn)行之后在模擬器中能看到中間的text顯示Halo,C++
稍微爬個(gè)階
native-lib.cpp中的函數(shù)名稱(chēng)為Java_com_xx_func
實(shí)際上,該命名方式為Java_class_package_name_func:class_package_name對(duì)應(yīng)實(shí)現(xiàn)native類(lèi)的包名,func為函數(shù)名
該命名可以由javah自動(dòng)生成。有兩種方式實(shí)現(xiàn)
1.較笨的方法:進(jìn)入工程目錄app\build\intermediates\classes\debug,使用javah命令:
javah -d jni class.package.ClassName
2.在AS中配置javah
ctrl+alt+s打開(kāi)setting,在Tools下找到External Tools
點(diǎn)擊加號(hào)+添加
其中Parameters,有多種配置方法,可以百度之。反正我試了幾種,均沒(méi)有成功過(guò),直接使用第一種方式
配置好之后,在project樹(shù)中右鍵能看到


簡(jiǎn)單的解析就先這樣。因?yàn)樗接邢?,各位看官如有任何疑?wèn)和建議請(qǐng)啪啪打臉。
下一篇為增量更新的應(yīng)用:http://www.itdecent.cn/p/867403e3eff1