AndroidStudio的NDK配置

本文教学课程文章,仅供参考:

1.环境安装

AndroidStudio默认不支持NDK开发,需要下载依赖工具,打开Tools->Android->SDK Manager->SDK Tools选中LLDB和NDK,点击确认,软件会自动安装NDK。

这里需要一个较长的时间,耐心等待安装完毕,最好重启下AS。

2.安装环境变量

这里写图片描述

这里写图片描述

3.直接调用本地方法

首先创建一个应用,并实现Java层的代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //这里定义了一个本地方法 观察方法 没有实现
    public native String helloFromC();

    /**
     * 点击按钮调用C代码返回的数据
     */
    public void showTostClick(View v){
        Toast.makeText(this, helloFromC(), Toast.LENGTH_SHORT).show();
    }
}

然后运行的时候报错,告诉我们没找到helloFromC() 的实现:

这里写图片描述

4.对helloFromC()的方法实现

这里写图片描述

这里写图片描述

写了上面的代码后,你会发现有些类不是很清晰,需要查看源码,但是这里却找不到 jstrig 源码:
这里写图片描述

接着导包:

#include <jni.h>

为了让工具识别这个规范文件,我们需要再次做配置,找到gradle.properties,配置如下(主要配置第二句):

org.gradle.jvmargs=-Xmx1536m
android.useDeprecatedNdk=true

5.编译c代码

因为一般的C代码是无法在机器中运行的,只有经过编译成为二进制代码才能被系统读取并运行。

首先需要拿到NDK的doc文档,建议点击链接NDK安装包下载,然后解压拿到某一版本的doc文档目录。

这里写图片描述

因为C语言的编译的过程中我们用了makefile文件的作为自动化编译的脚本,整个JNI的配置需要一个名叫Android.mk的文件,我们可以从上面doc文件夹的红色框查找:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

6.对接.so库与java层

让java层去libhello.so库中搜索对应的实现方法:

public class MainActivity extends AppCompatActivity {

    static {
        System.loadLibrary("hello");
    }
    ...
}

libhello.so的总目录在哪里呢?需要在app的build.gradle中配置:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq285016127/article/details/78395949