(一)NDK AS 3.0 环境配置

一、配置NDK包路径

  • 下载NDK开发包
    NDK开发包地址

我这里下载的最新的r20 ,因为有一个包r18之后移除了,为了兼容将r17下载 将缺少的包拷贝进去


001.png
101.png

二、增加本地方法类

package com.rrcc.ndkdemo;
public class Hello {
    static {
      System.loadLibrary("hello");
    }
    public static native  String sayHello();
}

三、通过命令生成头文件

  • javah -d ../jni com.rrcc.ndkdemo.Hello


    110.png

    112233.png

四、创建native方法文件

头文件#include "com_rrcc_ndkdemo_Hello.h" 为步骤三生成的

#include "com_rrcc_ndkdemo_Hello.h"
JNIEXPORT jstring JNICALL Java_com_rrcc_ndkdemo_Hello_sayHello
  (JNIEnv * env, jclass jclass1){
    return env->NewStringUTF("from C");
  }

五、build.gradle 文件配置

002.png

六、通过ndk-build 自动生成so文件

1. module 处右键 选择 Link C++ Project with Gradle

ndk-build对应的 Android.mk文件却有现成的 而CMake 对应的 CMakeLists.txt 文件需要重新写

004.png
006.png
007.png

2. 生成so文件、然后拷贝到app的libs文件目录下


008.png

009.png

七、方法调用

package com.rrcc.ndkdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    Button btn = null;
    TextView textView = null;
    @Override
    protected void onCreate(Bundle   savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn = findViewById(R.id.btn);
        textView = findViewById(R.id.text);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView.setText(Hello.sayHello());
            }
        });

    }
}

你可能感兴趣的:((一)NDK AS 3.0 环境配置)