android jni入门

来源:互联网 发布:大数据分析 工具 编辑:程序博客网 时间:2024/05/15 14:41

一、开发环境

       需要ndk、jdk、adt-bundle(Eclipse集成Android开发环境)等。

二、在Java中创建jni的Java类,如下代码:

package com.xmqq.example.jni;public class JniTest {    //native method    public native String helloJni();        static{            System.loadLibrary("testJni");    }}

其中,helloJni是native的方法,testJni是jni编译成so文件的名称。

三、生成头文件

首先run一下程序,生成.class文件,

然后用Win+R打开命令行,切换到工程目录。执行如下命令:

C:\Documents and Settings\Administrator\workspace\Jni>javah -classpath bin\classes -d jni com.xmqq.example.jni.JniTest

其中,-classpath是.class文件的目录,-d 是要生成头文件的类名。

(之前偷懒把这部分代码都放在activity里面,执行javah的时候,就遇到一个错误:错误: 无法访问android.app.Activity,所以就把jni接口独立出来)

生成头文件为com_xmqq_example_jni_JniTest.h,在工程目录的jni路径下,可要需要刷新工程才能看到。代码如下:

/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_xmqq_example_jni_JniTest */#ifndef _Included_com_xmqq_example_jni_JniTest#define _Included_com_xmqq_example_jni_JniTest#ifdef __cplusplusextern "C" {#endif/* * Class:     com_xmqq_example_jni_JniTest * Method:    helloJni * Signature: ()Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_xmqq_example_jni_JniTest_helloJni  (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif
四、编写C代码

根据头文件,编写c代码,假设c文件名为jni.c:

#include <string.h>#include <jni.h>JNIEXPORT jstring JNICALL Java_com_xmqq_example_jni_JniTest_helloJni    (JNIEnv* env, jobject thiz){    return (*env)->NewStringUTF(env, "this is my first blog!");}
五,编写mk文件
和c代码同一路径,编写Android.mk文件,代码如下:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE:= testJniLOCAL_SRC_FILES := jni.cinclude $(BUILD_SHARED_LIBRARY)

其中,LOCAL_MODULE是jni库文件的名称,LOCAL_SRC_FILES 是要编译的c文件,多个文件可以用空格隔开。

六、编译C文件

直接使用Eclipse编译,步骤如下:

1、右键点击工程------选择“properties”-----选择"Builders"------选择“new”,此时界面如下图所示:




2、选择“Program”,在Location下面点击Browse file system,选择ndk-build.cmd。在working directory,选择Browse workspace,选择本工程,如下图所示:




3、点击Build Options,勾选如下图所示:



      然后选择Specify Resources...,选择jni目录,如下图:




点击finish,完成配置。


七、编译apk

“clean”工程就会在libs/armeapi中生成so库,之后就可以正常运行apk了。源代码在http://download.csdn.net/detail/q2014818/7799129

0 0
原创粉丝点击