android的ndk开发简介-android学习之旅(93)
2016-02-29 16:14
489 查看
环境搭建
1.安装ndk
2.安装cygwin (android是基于linux的Framework,运行的本地库是.SO,而不是.dll库,大部分都实在windows下开发,如果是linux就没这个必要)
3.安装cygwin时候,在安装包时候,要安装Devel下面的gcc-core,g++,make三个包
配置cygwin环境
配置,为ndk的安装目录加进path。验证是否成功:打开cygwin,输入ndk-build,看是否执行
实现一个java层调用c语言实现的两个整数相加功能的函数,本地方法对应java层方法,本地函数代表c方法
java层的核心调用代码NDKExam.java如下:
{ //调用本地方法,加载本地库 System.loadLibrary("ndk-exam"); txetView.setText(add(1,1)+""); } //本地方法声明 public native int add(int x,int y);
生成jni本地函数原型,衣eclipse为例,编译NDKExam.java方法,eclispe自动编译了。使用javah命令处理NDKExam.class,生成.h文件,包含与本地方法add(),对应的本地函数原型
在project目录下新建jni目录,新建second.c文件,根据获得的函数名 ,实现本地函数,second的具体实现,又调用了first.c文件,second的代码如下:
#include "first.h"; #include "jni.h"; jint java_org_example_NDKExam_add( JNIEnv* env, jobject this, jint x, jint y) { return first(x,y); }
编写first.c和first.h,包括和second.c全部放入jni中,代码如下:
//first.c #include "first.h" int first(int x,int y){ return x+y; }
//first.h #ifndef FIRST_H #define FIRST_H extern int first(int x,int y); #endif/* FIRST_H */
编写android.mk文件放入jni中 ,具体代码如下:
#指定源文件的位置 LOCAL_PATH:= $(call my-dir) #初始化与make相关的环境变量 include $(CLEAR_VARS) #库编译相关信息(库名,源码) LOCAL_MODULE := ndk-exam LOCAL_SRC_FILES := first.c second.c #生成共享库 include $(BUILD_SHARED_LIBRARY)
最后执行cygwind的ndk-build命令
打开cygwin,进入jni的存在工程的根目录,既是jni的上级目录,执行ndk-build命令,会自动查找androidManifest.xml文件爱,找到了然后进入jni目录,编译生成libndk-exam.so文件,然后存放在lib文件夹下面
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题