首先 去网上下载NDK的开发包。

Android NDK
http://dl.google.com/android/ndk/android-ndk32-r10-windows-x86.zip
http://dl.google.com/android/ndk/android-ndk32-r10-windows-x86_64.zip
http://dl.google.com/android/ndk/android-ndk32-r10-darwin-x86.tar.bz2
http://dl.google.com/android/ndk/android-ndk32-r10-darwin-x86_64.tar.bz2
http://dl.google.com/android/ndk/android-ndk32-r10-linux-x86.tar.bz2
http://dl.google.com/android/ndk/android-ndk32-r10-linux-x86_64.tar.bz2
http://dl.google.com/android/ndk/android-ndk64-r10-windows-x86.zip
http://dl.google.com/android/ndk/android-ndk64-r10-windows-x86_64.zip
http://dl.google.com/android/ndk/android-ndk64-r10-darwin-x86.tar.bz2
http://dl.google.com/android/ndk/android-ndk64-r10-darwin-x86_64.tar.bz2
http://dl.google.com/android/ndk/android-ndk64-r10-linux-x86.tar.bz2
http://dl.google.com/android/ndk/android-ndk64-r10-linux-x86_64.tar.bz2
http://dl.google.com/android/ndk/android-ndk-r10-cxx-stl-libs-with-debug-info.zip

下载完成后 只需解压即可 然后将NDK的根目录配置至电脑的环境变量中。

Eclipse中新建一个普通的安卓项目、

在MainActivity.java添加一行

publicstaticnativeStringgetStringFromC();//这个是定义需要调用的接口static{System.loadLibrary("hello");//这里是在程序运行时加载lib库,现在还没有但是可以写上去}


再在项目里新建一个文件夹 jni

打开项目路径、打开CMD进入项目根目录

输入命令如:

D:\PersonWorkSpace\FirstNDK>javah-classpathbin/classes-djnicom.xcode.firstndk.MainActivity

后面那个

com.xcode.firstndk.MainActivity 就是需要编译成C++头文件的 Java 类,就是写了定义了native方法的类文件

然后会发现在项目下jni文件夹下 多了一个 .h 文件,


在 jni 文件夹下新建一个文件 命名Android.mk

LOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)LOCAL_MODULE:=hello#这一行后面的那个hello就是我们将要生成的库的名称LOCAL_SRC_FILES:=hello.c#这一行是将要编译成库的C文件,现在还没有但是写上include$(BUILD_SHARED_LIBRARY)

在 jni 目录下新建一个文件 hello.c

#include<stdio.h>#include<stdlib.h>#include"com_xcode_firstndk_MainActivity.h"/*这个函数名,是在刚才生成的那个.h文件里拷贝的*/JNIEXPORTjstringJNICALLJava_com_xcode_firstndk_MainActivity_getStringFromC(JNIEnv*env,jclassjclss){return(*env)->NewStringUTF(env,"HellofromJNI!");}

打开CMD 进入到项目根目录

D:\PersonWorkSpace\FirstNDK>ndk-build

然后它会打印如下字样:

[armeabi]Compilethumb:hello<=hello.c[armeabi]SharedLibrary:libhello.so[armeabi]Install:libhello.so=>libs/armeabi/libhello.so

这时候 就可以在Java文件中使用了,如:

System.out.println(getStringFromC())


更多相关文章

  1. Android检测SD卡是否可用,Android获取磁盘可用空间,Android获取磁
  2. Android Framework中添加AIDL文件编译
  3. Android布局文件layout.xml的一些属性值
  4. 《android 1: 创建一个安卓项目》
  5. Android的xml文件中@、@android:type、@*、?、@+的含义和区别
  6. “加一”项目总结--android使用篇(二)(转)
  7. Android布局文件中常用的属性
  8. Android工具箱之文件目录

随机推荐

  1. Android SlidingMenu 使用详解
  2. Android中自定义带图标和清空内容按钮的E
  3. Android Studio中获取MD5、SHA1、SHA256
  4. Drawable资源——Inset Drawable 可绘制
  5. 2011.09.15 ——— android 桌面添加快捷
  6. Android中AsyncTask的执行过程
  7. android:inputtype
  8. android环境配置(adb问题)
  9. android开发之给LinearLayout增加点击效
  10. android 下载图片及时显示