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

上一篇文章输生成了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

Android NDK入门实例 计算斐波那契数列二生成.so库文件
右击工程Refresh下,就看到生成了libfib.so

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

 

你可能感兴趣的:(android NDK)