美文网首页
(一)NDK AS 3.0 环境配置

(一)NDK AS 3.0 环境配置

作者: 极客天空 | 来源:发表于2019-07-22 01:46 被阅读0次

    一、配置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 环境配置

          本文链接:https://www.haomeiwen.com/subject/xyvblctx.html