Android JNI开发

1.新建java类,创建native方法

public class JniTest {

    public static native String get();

    public static native void set(String str);

}

2.生成class文件

javac JniTest.java

3.生成.h文件

F:\ProjectCode\TestJNI\app\src\main\java>javah -d ..\jni  com.xsy.testjni.JniTest

4.创建c文件

 #include "com_xsy_testjni_JniTest.h"
#include<stdio.h>

JNIEXPORT jstring JNICALL Java_com_xsy_testjni_JniTest_get(JNIEnv *env, jobject thisz)
  {

       printf("invoke get from C\n");
       return (*env)->NewStringUTF(env,"hello from JNI !");
  }

JNIEXPORT void JNICALL Java_com_xsy_testjni_JniTest_set(JNIEnv *env, jobject thisz, jstring string)
  {
     printf("invoke set from C\n");

     char* str=(char*)(*env)->GetStringUTFChars(env,string,NULL);
     printf("%s\n",str);
     (*env)->ReleaseStringUTFChars(env,string,str);
  }

5.创建Android.mkApplication.mk
5.1Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := jni-test
LOCAL_SRC_FILES := test.c

include $(BUILD_SHARED_LIBRARY)

5.2Application.mk

APP_ABI := all

6.生成.so库
在这里插入图片描述

Name:自己定义
Program:D:\AndroidSDK\ndk-bundle\build\ndk-build.cmd
Working directory:$ProjectFileDir$\app\src\main

在这里插入图片描述
7.在app的build.gradle里面

android {
 ndk {
            moduleName "jni-test"
        }
    }
 sourceSets.main {
        jniLibs.srcDir 'src/main/libs'
        jni.srcDirs 'src/main/jni'
        jni.srcDirs =[] // disable automatic ndk-build
    }

8.调用so库

static {
        System.loadLibrary("jni-test");
    }
 tv.setText(JniTest.get());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值