环境搭建

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文件夹下面

最新文章

  1. 企业管理软件ERP演变之一
  2. Azure Blob Storage 基本用法 -- Azure Storage 之 Blob
  3. HDU 4362 Dragon Ball 贪心DP
  4. C puzzles详解【46-50题】
  5. HDU3487 Play With Chains(Splay)
  6. 标准模板库(STL)学习探究之stack
  7. Morris Traversal
  8. jQuery事件与动画
  9. wifi智能插座 一键扫描局域网内插座Ip及其它信息 Python源代码API
  10. 基于visual Studio2013解决C语言竞赛题之1008整除数
  11. SD卡兼容性问题(转)
  12. Python操作Redis及连接方式
  13. 跟随我在oracle学习php(15)
  14. 王者荣耀交流协会互评Beta版本--爱阅app
  15. ASP.NET MVC 学习笔记-6.异步控制器
  16. Java中的public、private、protected,函数修饰符
  17. 机械臂运动学逆解(Analytical solution)
  18. chrome浏览器中的百度搜索引擎总是先自动跳转到百度首页怎么办?
  19. STL——vector
  20. 【小程序】  的识别

热门文章

  1. Java 中的日期与时间
  2. 在github上最热门好评高的ROS相关功能包
  3. leetcode 3 Longest Substring Without Repeating Characters最长无重复子串
  4. Cocos2D实现上下滚动式状态窗口
  5. Android初级教程调用手机拍照与摄像功能
  6. Android初级教程理论知识(第五章页面跳转和数据传递)
  7. 【Unity Shaders】Lighting Models 介绍
  8. Docker教程:镜像构建和自动镜像构建dockerfile
  9. python读写word、excel、csv、json文件
  10. (NO.00002)iOS游戏精灵战争雏形(九)