您的位置:首页 > 移动开发 > Android开发

Android NDK入门实例 计算斐波那契数列二生成.so库文件

2013-07-13 19:32 369 查看
上一篇文章输生成了jni头文件,里面包含了本地C代码的信息,提供我们引用的C头文件。下面实现本地代码,再用ndk-build编译生成.so库文件。由于编译时要用到make和gcc,这里很多人是通过安装cygwin,搭建一个linux环境编译。我是直接用Android NDK里ndk-build工具编译,没有安装cygwin,也能编译。

一、编写本地代码fib.c

首先在过程fiblib下新建一个目录jni,将上一篇生成的jni头文件添加到这个目录,接着在源码目录下新建文件fib.c:

文件jni/fib.c:

#include "com_example_fiblib_FibLib.h"
//递归的斐波那契算法
long fibN(long n){
if(n<0)
return 0;
if(n==1)
return 1;
return fibN(n-1)+fibN(n-2);
}
//迭代的斐波那契算法
long fibNI(long n){
long previous = -1;
long result = 1;
long i = 0;
int sum = 0;
for (i=0;i<=n;i++){
sum = result + previous;
previous = result;
result = sum;
}
return result;
}
//与头文件生成的JNI方法的签名一致,否则运行时无法调用到本地代码
JNIEXPORT jlong JNICALL Java_com_example_fiblib_FibLib_fibN
(JNIEnv *env, jclass obj, jint n){
return fibN(n);
}
JNIEXPORT jlong JNICALL Java_com_example_fiblib_FibLib_fibNI
(JNIEnv *env, jclass obj, jint n){
return fibNI(n);
}

二、编写Makefile·

创建本地库之前,需要编写Android.mk,描述编译项目

文件jni/Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE	:= fib
LOCAL_SRC_FILES	:= fib.c

include $(BUILD_SHARED_LIBRARY)

三、编译构建共享库

这里需要在jni下执行ndk-build生成库文件,即在libs下生成共享库libfib.so



右击工程Refresh下,就看到生成了libfib.so

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: