用户登录
用户注册

分享至

JNI初步配置并且实现一个小例子

  • 作者: 电痴
  • 来源: 51数据库
  • 2021-08-24

首先在新建项目中的local.properties中配置ndk路径

ndk.dir=C\:\\android-ndk-r10e

?这里分享一下这个版本的ndk

链接:http://www.all.com/files/Articles/416/0/159/159817_20210618145946136.jpg?
提取码:weaj?

配置环境变量

在gradle.properties中配置兼容老版本ndk?项目gradle.properties下?

#android.useDeprecatedNdk=true
android.deprecatedNdkCompileLease=1600525901073

jni的使用过程

1.首先新建调用c代码的类这里以Godv为例

public class Godv {
    {
        System.loadLibrary("Hello");
    }
    //定义调用代码
    public native String sayHello();
}

2.build.gradle(app)android ->?defaultConfig下配置

ndk{
            moduleName "Hello"  //so   文件   lib+moduleName+.so
            abiFilters 'armeabi' , 'armeabi','x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a' //cpu类型
        }
        sourceSets{
            main{
                jniLibs.srcDirs=['libs']
            }
        }

3.写c文件

#include <stdio.h>
#include <stdlib.h>
#include <jni.h>

jstring Java_com_godv_hello_Godv_sayHello (JNIEnv * env ,jobject jobj)
{
    char * text = "hello i am godv ";
    return (* env)->NewStringUTF(env,text);
}

4.main

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String s = new Godv().sayHello();
        System.out.println(s);
    }
}

?

软件
前端设计
程序设计
Java相关