JNI开发,实现自己的C代码,helloworld
在这里实现一个简单的demo,完成加载自己的C代码
使用Android studio,一步一步教你实现在屏幕上显示出helloworld
如下图显示,配置号NDK的路径,没有路径的需要自己下载,在Android NDK location 下按提示下载ndk-bundle,下载完成后,则会自动配置好NDK路径
来源于网络
在gradle.properties 文件里面添'android.useDeprecatedNdk=true',如果不添加的话会在编译的时候报错,提示添加这段代码,到时候按照提示进行添加也可。
来源于网络
修改build.gradle配置。打开\app\build.gradle文件,在'defaultConfig'里面添加如下代码
ndk{
moduleName "hello" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定的三种abi体系下的so库
}
如图:
来源于网络
下面是在Activity写下的调用代码:
package com.cxria.ndkapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView mTextView;
static {
//加载需要的library
System.loadLibrary("hello");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.textview);
mTextView.setText(getStringFromJNI());
}
//C语言实现的方法
public static native String getStringFromJNI();
}
全部代码,我都粘贴出来了.
打开终端,在Android studio最下面的导航栏Terminal 输入如下的命令
进入app/src/main目录下新建jni目录:cd app/src/main –> mkdir jni (也可以找到指定目录手动创建)
然后进入app/src/main/java目录下编译:cd app/src/main/java –> javah -jni com.cxria.ndkapplication.MainActivity 注意一定要加上包路径。
执行完上述操作后,会在java目录下生成com_cxria_ndkapplication_MainActivity.h头文件,我们在MainActivity中写的本地方法的方法名已经在里边了。
在之前的jni文件夹下面新建'hello.c',在里面编写我们的C语言代码
编译运行,就能在屏幕上显示出'helloworld'了