安卓NDK的开发
首先 去网上下载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())
更多相关文章
- Android检测SD卡是否可用,Android获取磁盘可用空间,Android获取磁
- Android Framework中添加AIDL文件编译
- Android布局文件layout.xml的一些属性值
- 《android 1: 创建一个安卓项目》
- Android的xml文件中@、@android:type、@*、?、@+的含义和区别
- “加一”项目总结--android使用篇(二)(转)
- Android布局文件中常用的属性
- Android工具箱之文件目录