Android JNI使用方法步驟(限windows)

本文详细介绍如何在Eclipse中创建Android工程并实现JNI调用。包括配置环境变量、使用javah生成头文件、编写C/C++代码及Makefile,并通过Android.mk构建so库。


1,

eclipse建立android工程(下面我建立在d:\android\workspace\)

projectname jni_hello

Applicationname: jni_helo

packagename practice.jni_hello

createactivity helloActivity

min sdk version 10



2,

helloActivity.java文件鍵入相應代碼,如下圖


3,cmd進入D:\Android\workspace\jni_hello\bin\practice\jni_hello,查看是否已經生成

helloActivity.classeclipse對保存的JAVA源文件會進行編譯,不像C需要手動)。。。

存在的話退回到bin目錄,當前目錄為D:\Android\workspace\jni_hello\bin\

使用javah命令生成接口頭文件

(

:javah出現“javah不是內部或外部命令”的情況,查看jdk目錄是否存在javah.exe,

X:\Java\jdk1.6.0_24\bin加入系統變量path裏面

)


4,


在工程目錄中建立一個jni目錄,并在jni目錄中建立一個Android.mk文件,內容如下


LOCAL_PATH:= $(call my-dir)

include$(CLEAR_VARS)


MY_LOCAL_PATH:=$(LOCAL_PATH)

LOCAL_PATH :=$(MY_LOCAL_PATH)/../../C_hello

LOCAL_MODULE :=gethello


$(evalinclude $(LOCAL_PATH)/inc_dictbase.mk)


include$(BUILD_SHARED_LIBRARY)


5


建立一與工程目錄jni_hello同級的目錄C_hello

C_hello分別建立下面文件


它們內容分別如下


jni_adapter.c//接口函數


#include <jni.h>
//#include "practice_jni_hello_helloActivity.h"
#include "_func_base.h"

JNIEXPORT jstring JNICALL Java_practice_jni_1hello_helloActivity_sayHello
(JNIEnv* env, jobject obj)
{
	char buf[30]= "none aaa";

	JGByt(buf);
	return (*env)->NewStringUTF(env,buf);
}

func_base.h//C函數聲明文件

voidJGByt(char* buf);

..........

hello.c//c 函數實現文件

#include "string.h"

void JGByt(char* buf)
{
    char Str[]="JIN GE BYE!hahah";
    int i=0;
    
    while(Str[i] != 0x00) {
    	buf[i] = Str[i];
    	i++;
    }
    buf[i] = 0x00;
}

inc_dictbase.mk//android makefile 文件


#LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog

LOCAL_SRC_FILES	:=\
_jni_adapter.c\
hello.c

LOCAL_LDLIBS := -lm

6,

cywin進入到項目jni目錄執行Android.mk腳本,生成libgethello.so

然後在eclipse項目資源管理器刷新一下,讓其加載libgethello.so文件,運行

效果如下:



DONE----------------------------

下面為網上一個例子的連接

(http://marakana.com/forums/android/examples/49.html)




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值