eclipse中的Jni开发流程(一)——基本开发

1.eclipse中的Jni开发流程(一)
2.eclipse中的Jni开发流程(二)
3.Android Studio配置CMake开发NDK

1、声明java的本地方法,使用native关键字 本地方法不用去实现


public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void HelloWord(View view){
        Toast.makeText(this, hellofromC(), 0).show();
    }
    public native String hellofromC();
}

2、在项目的根目录创建jni文件夹

3、在jni文件夹下创建xxxx.c文件(导入三个必要的头文件《stdlib.h、stdio.h、jni.h》)

①本地函数命名规则: Java_包名类名本地方法名(可以使用javah命令去生成)
②JNIENV* env JNIEnv 是JniNativeInterface这个结构体的一级指针
③JniNativeInterface这个结构体定义了大量的函数指针
④env 就是结构体JniNativeInterface这个结构体的二级指针
⑤(*env)->调用结构体中的函数指针
⑥第二个参数jobject 调用本地函数的java对象就是这个jobject

#include<stdlib.h>
#include<stdio.h>
#include<jni.h>
JNIEXPORT jstring JNICALL Java_com_example_hellojni_MainActivity_hellofromC
  (JNIEnv * env, jobject  jo){
    char* hello="Hello World From JNI !";
    return (*env)->NewStringUTF(env, hello);
}

4、在jni文件夹下创建Android.mk文件 makefile 告诉编译器.c的源文件在什么地方,要生成的编译对象的名字是什么

Android.mk的文件内容(复制即可)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello #指定了生成的动态链接库的名字,加载的时候就是它的名字 
LOCAL_SRC_FILES := hello.c #指定了C的源文件叫什么名字
include $(BUILD_SHARED_LIBRARY)

5、在项目的根目录下调用ndk-build命令编译C代码,生成动态链接库libxxx.so文件 文件的位置 lib->armeabi->libxxxx.so

6、在Java代码需要调用的地方的类中使用static代码块加载动态链接库( System.loadlibrary(“动态链接库的名字”); Android.mk的LOCAL_MODULE所指定的名字)

在MainActivity中
static{
        System.loadLibrary("hello");
    }

至此,就可以将我们的程序跑起来了,你会了吗?下一篇我会讲Jni在eclipse中简便开发流程,欢迎继续关注!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值