1.下载NDK
gradle.properties 中配置 android.useDeprecatedNdk=true
build.gradle 中
defaultConfig {
applicationId “com.enjni.myndkproject”
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName “1.0”
testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner”
ndk{
moduleName “helloJni”//*生成的so文件名,必填
abiFilters “armeabi”, “armeabi-v7a”, “x86” //输出abi体系结构下的so库
}
}
主activity 中写入
static {
System.loadLibrary(“helloJni”);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_ndk_main);
TextView textView = (TextView)findViewById(R.id.text_show);
textView.setText(helloJni());
public native String helloJni();
helloJni是native方法,点击option+enter,会自动生成cpp文件夹的.c文件,在这个.c 文件下可以传入值
2.运行程序看到界面
以下博主写的文章更加直观的解释了 jni 文件 .c 和 .h 生成的原理,请参考
http://blog.csdn.net/eastmoon502136/article/details/50759209
主要步骤
cd app/build/intermediates/classes/debug
javah -jni com.jared.emjnistudy.NdkJniUtils
在当前目录下生成
com_jared_emjnistudy_NdkJniUtils.h
接着在main目录下新建jni目录,然后把这个头文件拷贝到jni目录下,然后新建一个c文件,命名为jnitest.c
编代码会生成 .so 文件。
以上是静态实现jni注册的方法,由于弊端很多,最好采用动态注册jni的方法
参考地址:
本文详细介绍如何使用Android NDK进行开发,包括配置环境、创建JNI接口并生成对应的C/C++文件,最后编译成so库供应用调用。通过实际案例演示整个流程,并提供动态注册JNI方法的参考资料。

1290

被折叠的 条评论
为什么被折叠?



