欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-07-04 16:23:43
首先在新建项目中的local.properties中配置ndk路径ndk.dir=C\:\\android-ndk-r21b在gradle.properties中配置兼容老版本ndkandroid.useDeprecatedNdk=truejni的使用过程1.首先新建调用c代码的类这里以Godv为例public class Godv { { System.loadLibrary("Hello"); } //定义调用代码 publi...

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

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

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

链接:https://pan.baidu.com/s/1bL3yKwYrrpff_CuvHlNHyQ 
提取码: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);
    }
}

 

本文地址:https://blog.csdn.net/we1less/article/details/108685734