环境搭建

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

android的ndk开发简介-android学习之旅(93)的更多相关文章

  1. 【转】 Android的NDK开发(1)————Android JNI简介与调用流程

    原文网址:http://blog.csdn.net/conowen/article/details/7521340 ****************************************** ...

  2. Android的NDK开发(1)————Android JNI简介与调用流程

    1.JNI简介 JNI全称为Java Native Interface(Java本地调用).从Java1.1开始,JNI成为java平台的一部分,它允许Java代码和其他语言写的代码(如C&C ...

  3. Android的NDK开发(5)————Android JNI层实现文件的read、write与seek操作

    1. 在Android的Java层实现文件的读写操作是非常简单的,可以参看之前写的博文:http://blog.csdn.net/conowen/article/details/7296121 在JN ...

  4. Android之NDK开发(转)

    Android之NDK开发 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第 ...

  5. Android之NDK开发

    转自:http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html 一.NDK产生的背景 Android平台从诞生起,就已经支持C ...

  6. 【转】Android之NDK开发

    原文网址:http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html 一.NDK产生的背景 Android平台从诞生起,就已经支 ...

  7. Android之NDK开发(转载)

    http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html 一.NDK产生的背景 Android平台从诞生起,就已经支持C.C+ ...

  8. Android下NDK开发环境搭建

    Android下NDK开发环境搭建 1.     AndroidNDK安装与配置 1.1  NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP部 ...

  9. android Jni NDK开发环境搭建及其简单实例的编写

    android  Jni  NDK开发环境搭建及其简单实例的编写 由于工作需要,需要采用开发想要的JNI,由于之前没有接触过安卓的开发,所以更加网上的帖子,学习了下.遇到了些问题,然后总结下学习过程中 ...

随机推荐

  1. emysql add_poop() 超时出错

    emysql add_poop() 超时出错(金庆的专栏)sample/a_hello.erl 连接本机更改为连接局域网内的MySql服务器:    emysql:add_pool(hello_poo ...

  2. FFmpeg的HEVC解码器源代码简单分析:CTU解码(CTU Decode)部分-TU

    ===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpe ...

  3. Android简易实战教程--第二十九话《创建图片副本》

    承接第二十八话加载大图片,本篇介绍如何创建一个图片的副本. 安卓中加载的原图是无法对其修改的,因为默认权限是只读的.但是通过创建副本,就可以对其做一些修改,绘制等了. 首先创建一个简单的布局.一个放原 ...

  4. C控制台实现模拟平抛运动算法

    平抛运动这个相信读了高中物理都知道这个概念了,详细的我就不说了,不明白的看看百度: 平抛运动 接下来看看用控制台实现的平抛运动算法: #include <stdio.h> #include ...

  5. FFmpeg源代码简单分析:libavdevice的gdigrab

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  6. 无刷新更新listview

    闲来无事,写点水文吧!有用得着的可以参考下,无刷新更新listview是什么意思呢?举个例子,在订单类listview列表中,常常会有各种订单状态,拿商城类app来说,会有待付款,待收货,确认收货等等 ...

  7. UNIX网络编程——TCP连接的建立和断开、滑动窗口

    一.TCP段格式: TCP的段格式如下图所示: 源端口号与目的端口号:源端口号和目的端口号,加上IP首部的源IP地址和目的IP地址唯一确定一个TCP连接. 序号:序号表示在这个报文段中的第一个数据字节 ...

  8. 在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1 错误的解决办法。

    在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1 错误的解决办法. 先确定 libclntsh.so.11.1 所在目录: [oracle@localhost ~] ...

  9. Android进阶(一)几种网络请求方式详解

    Ref:http://blog.csdn.net/zuolongsnail/article/details/6373051 Android应用经常会和服务器端交互,这就需要手机客户端发送网络请求,下面 ...

  10. 【一天一道LeetCode】#118. Pascal's Triangle

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given n ...