直接生成函数库的jni技术

步骤一:创建工程

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中的函数名复制过去,减少出错概率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值