您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页android studio 使用ndk

android studio 使用ndk

来源:二三娱乐

准备工作

  • 下载ndk。

新建一个NdkDemo。

  • 配置ndk,file->Project Structure。
  • 在gradle.properties文件追加android.useDeprecatedNdk=true
  • 新建com.kkk.jni包用于放置含有native方法的类。在包中新建jniMathKit.class。
package com.kkk.jni;

public class jniMathKit {
    public native int getSum(int a,int b);//get a+b
    static {
        System.loadLibrary("jniDemo");//与build.gradle中务必一致。这里注意,不要以lib开头,否则会出现类初始化错误,我也不知道原因。
    }
}

  • 新建jni文件夹。右击java文件夹New->Folder->JNI Folder。
  • 点击Rebuild Project,切换目录结构Andorid——>Project。如果在../app/build/下有intermediates继续下一步。

  • 打开 终端 terminal,进入到../app/build/intermediates/classes/debug/ 执行javah com.kkk.jni.jniMathKit,可以发现在/debug文件夹下多个一个.h文件。把.h文件复制到jni文件夹(与java文件夹同层)中。

  • 在对应的module的build.gradle文件中defaultConfig中添加ndk配置
  defaultConfig {
        applicationId "com.kkk.ndkdemo"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        ndk {
            moduleName "jniDemo"
        }
    }
  • 再次Rebuild Project

  • 打开jniMathKit,把鼠标移动到getSum上,alt+enter,可以发现多一个Create function Java_com_kkk_jni_jniMathKit_getSum选项,点击创建。此时会创建一个jniDemo.c类,实现.h中的方法如下。

#include "com_kkk_jni_jniMathKit.h"

JNIEXPORT jint JNICALL Java_com_kkk_jni_jniMathKit_getSum
        (JNIEnv *env, jobject jobject, jint a, jint b){
    return a+b;
}
  • 最后在mainAcitity中调用。编译运行。
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        jniMathKit jniMathKit= new jniMathKit();
        Log.e("sb", "sum :"+ jniMathKit.getSum(5,6) );
    }

参考资料

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务