參考:
http://yanbober.github.io/2015/02/14/android_studio_jni_1/
http://billhoo.blog.51cto.com/2337751/1125559
1、在local.properties文件中加入NDK路徑,如:
ndk.dir=E\:\\as_ndk\\android-ndk-r11b
2、在gradle.properties加入:
android.useDeprecatedNdk=true
3、新建NdkJniUtils:
public class NdkJniUtils {
public native String stringIv();
static {
System.loadLibrary("MyTest"); //defaultConfig.ndk.moduleName
}
}
4、在stringIv這個(gè)地方按“ALT+Enter”(eclipse 快捷鍵),出現(xiàn)

后回車,會(huì)發(fā)現(xiàn)在main下多了jni目錄和一個(gè)“MyTest.c”(與so文件名相同)文件。
當(dāng)然,也可以右鍵main選擇建立jni目錄,

然后在jni下建立建立MyTest.c文件:

并在C文件中加入“#include <jni.h>”
5、在app gradle中的defaultConfig節(jié)點(diǎn)中加入:
defaultConfig {
...
ndk {
moduleName = "MyTest"
abiFilters "armeabi"
}
}
其中JniTest為.so文件的名字,abiFilters "armeabi"指的是在lib下會(huì)建立armeabi文件,設(shè)置支持的 SO 庫構(gòu)架,加多個(gè)的話:
abiFilters "armeabi", "armeabi-v7a", "x86"
這樣的話就會(huì)在指定的庫架構(gòu)生成.so文件。
庫結(jié)構(gòu)參考
6、然后點(diǎn)擊

完成后發(fā)現(xiàn).c文件中的#include <jni.h>的jni.h為紅色即可。
7、再在NdkJniUtils 中stringIv這個(gè)地方按“ALT+Enter”(eclipse 快捷鍵),出現(xiàn)

后回車,然后在.c文件中就出現(xiàn)了這些代碼:
JNIEXPORT jstringJNICALL
Java_com_ccddy_jnitest_NdkJniUtils_stringIv(JNIEnv
*env,
jobject instance
)
{
// TODO
return (*env)->
NewStringUTF(env, returnValue
);
}
8、把上面的代碼改成這樣:
#include <jni.h>
#include <string.h>
jstring
Java_com_ccddy_jnitest_NdkJniUtils_stringIv(JNIEnv
*env,
jobject instance
)
{
// TODO
return (*env)->
NewStringUTF(env, "返回值"
);
}
9、運(yùn)行apk,打印NdkJniUtils的stringIv方法的返回值即為“返回值”。
注意:如果ALT+ENTER無效,則可以使用gradle Sync Now導(dǎo)致gradle重建即可。