现在的位置: 首页 > 综合 > 正文

直接生成函数库的jni技术

2013年01月15日 ⁄ 综合 ⁄ 共 1435字 ⁄ 字号 评论关闭
文章目录

步骤一:创建工程

Location: D:\java\NDK\android-ndk-r8b\MyPro,该路径是NDK的目录,MyPro是自己建立的文件夹。此时D:\java\NDK\android-ndk-r8b\MyPro\JNIMySecond\bin目录下为空

步骤二:创建jni文件夹

在工程的根目录D:\java\NDK\android-ndk-r8b\MyPro\JNIMySecond下创建jni文件夹,如图:

jni文件夹下添加Android.mk(必须是这个文件名)文件,其内容为

# Copyright (C) 2009 The Android Open Source Project

#

# Licensed under the Apache License, Version 2.0 (the "License");

# you may not use this file except in compliance with the License.

# You may obtain a copy of the License at

#

#      http://www.apache.org/licenses/LICENSE-2.0

#

# Unless required by applicable law or agreed to in writing, software

# distributed under the License is distributed on an "AS IS" BASIS,

# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

# See the License for the specific language governing permissions and

# limitations under the License.

#

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := JNIMySecond

LOCAL_SRC_FILES := com_xxj_JNIMySecond_Jni.c

include $(BUILD_SHARED_LIBRARY)

可以看到LOCAL_SRC_FILES := com_xxj_JNIMySecond_Jni.c这句话,这是需要编译的本地方的源文件,名字与jni文件夹中.c文件的名字相同。在.c文件中,函数名的命令有一定的规则,否则会查找不到对应的函数。以

jint Java_com_xxj_JNIMySecond_Jni_add

  (JNIEnv *env, jclass this, jint x, jint y){

return x+y;

}

为例子进行说明

Jint:说明返回值是整形

Java:必须添加的

_com_xxj_JNIMySecond_Jni:声明add方法的Jni类在整个工程中的路径

add:函数名

由于命名规格的原因,函数名很长,若手动输入的话,很可能由于细小的输入错误导致整个工程错误,而且输入错误查找起来很困难,所以在声明的函数比较多的情况下,建议使用javah技术生成.h头文件,在.h文件中可以看到具体的函数声明,那么在.c中实现具体方法时,可以将.h中的函数名复制过去,减少出错概率

【上篇】
【下篇】

抱歉!评论已关闭.