JNI开发实现helloworld,调用自己的C代码实现(1)

JNI开发,实现自己的C代码,helloworld

在这里实现一个简单的demo,完成加载自己的C代码

使用Android studio,一步一步教你实现在屏幕上显示出helloworld

如下图显示,配置号NDK的路径,没有路径的需要自己下载,在Android NDK location 下按提示下载ndk-bundle,下载完成后,则会自动配置好NDK路径

JNI开发实现helloworld,调用自己的C代码实现(1)_第1张图片
来源于网络

在gradle.properties 文件里面添'android.useDeprecatedNdk=true',如果不添加的话会在编译的时候报错,提示添加这段代码,到时候按照提示进行添加也可。

JNI开发实现helloworld,调用自己的C代码实现(1)_第2张图片
来源于网络

修改build.gradle配置。打开\app\build.gradle文件,在'defaultConfig'里面添加如下代码

ndk{
    moduleName "hello" //生成的so名字
    abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定的三种abi体系下的so库
 }

如图:

JNI开发实现helloworld,调用自己的C代码实现(1)_第3张图片
来源于网络

下面是在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开发实现helloworld,调用自己的C代码实现(1)_第4张图片

在之前的jni文件夹下面新建'hello.c',在里面编写我们的C语言代码

JNI开发实现helloworld,调用自己的C代码实现(1)_第5张图片

编译运行,就能在屏幕上显示出'helloworld'了

你可能感兴趣的:(JNI开发实现helloworld,调用自己的C代码实现(1))