步骤一:创建工程
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中的函数名复制过去,减少出错概率