最近要用到Android NDK,调用本地代码。就学了下Android NDK,顺便与大家分享。下面以一个具体的实例计算斐波那契数列,说明如何利用Android NDK,调用本地代码。以及比较本地代码与java代码的效率。

开发环境搭建见以前写的XP下搭建Android开发环境和XP下搭建AR开发环境,具体过程不再重复。这里主要介绍利用Android NDK调用本地代码,实现全过程。

一、新建Android Application

Android NDK入门实例 计算斐波那契数列一生成jni头文件_第1张图片

其它默认,Next直至Finish完成新建工程。

二、使用javah命令生成供本地调用的头文件

1.新建java文件(class),文件FibLib.java

package com.example.fiblib;public class FibLib {//java的递归实现public static long fibJ(long n){if(n <= 0)return 0;if(n==1)return 1;return fibJ(n-1) + fibJ(n-2);}//java的迭代实现public static long fibJI(long n){long previous = -1;long result = 1;for(long i=0;i<=n;i++){long sum=result+previous;previous = result;result = sum;}return result;}//本地实现在这里定义本地C代码的函数原型static {System.loadLibrary("fib");}public static native long fibN(int n);//本地的递归实现public static native long fibNI(int n);//本地的迭代实现}

2.编译、运行
现在编译运行主要是在过程bin目录下生成类文件,用于javah命令生成jni头文件。运行后会在bin下生成class目录,下面在dos下生成jni头文件。

Android NDK入门实例 计算斐波那契数列一生成jni头文件_第2张图片

开始没有用-classpath classes 指明类所在的位置,提示错误,加上-classpath classes选项就ok了,可以看到成功生成了com_example_fiblib_FibLib.h。下面贴出com_example_fiblib_FibLib.h代码,这个自动生成的,不需要修改。

/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_example_fiblib_FibLib */#ifndef _Included_com_example_fiblib_FibLib#define _Included_com_example_fiblib_FibLib#ifdef __cplusplusextern "C" {#endif/* * Class:     com_example_fiblib_FibLib * Method:    fibN * Signature: (I)J */JNIEXPORT jlong JNICALL Java_com_example_fiblib_FibLib_fibN  (JNIEnv *, jclass, jint);/* * Class:     com_example_fiblib_FibLib * Method:    fibNI * Signature: (I)J */JNIEXPORT jlong JNICALL Java_com_example_fiblib_FibLib_fibNI  (JNIEnv *, jclass, jint);#ifdef __cplusplus}#endif#endif


更多相关文章

  1. pandaboard ES学习之旅——5 Android Linux内核源代码下载与编译
  2. windows下载android源代码
  3. android 开发中中,经常用到的代码
  4. android panellistview 圆角实现代码
  5. Android如何在java代码中设置margin
  6. Android Content Provider详解及示例代码
  7. android中eclipse查看源代码
  8. Android开发之android_apk 在线安装(源代码分享)
  9. vlc android 代码编译

随机推荐

  1. Android(安卓)Gradle 构建工具(Android(
  2. Android(安卓)系统开发学习杂记
  3. Failed to install the following Androi
  4. Android实现程序前后台切换效果
  5. android中include标签的使用
  6. Android(安卓)最火快速开发框架AndroidAn
  7. 常用的android权限配置和常用工具代码
  8. coco2d-x android
  9. android 设置 永不休眠
  10. Android重量级开发之--提高android启动速