安卓开发ndk的编译顺序 和 jni的简单调用

原创 2016年05月30日 14:26:13


1. 首先需要下载ndk 并且 配置ndk 环境变量  就是把 ndk-build.cmd的文件路径放到path 的环境变量中


2 创建 jni 文件夹 里面创建 Android.mk记事本文件 内容是

LOCAL_PATH := $(call my-dir) (不用管)
include $(CLEAR_VARS)  (不用管)
LOCAL_MODULE    := 生成的lib名字 
LOCAL_SRC_FILES := c/c++代码文件名 同目录下的
include $(BUILD_SHARED_LIBRARY)  (不用管)


3 进入cmd  cd 到你创建jni 的目录那里  如果d://so/jni  就cd到d://so文件夹就行了 


4  使用  ndk-build 命令  编译 c/c++ 文件  如果成功的话 会生成 libs obj 两个目录,  libs里面的为我们需要 .so文件



以上编译的步骤就完成了!


下面是使用.so 


1在代码中调用 .so  必须要创建 jni.java


jni 代码 和 cpp文件中的代码 是一一对应的 下面是个读取文件时间filetime 转换成 时间戳 的例子!



 这个是java 代码 





c代码


编写c代码时一定要注意编码问题! 注意!否则会编译失败!


可以理解为 java代码 是个接口 c代码 是实现 只不过这个对应比较麻烦 


可以看到 参数多了几个, 方法名 和参数 都变了  这都是有规律的变化 具体的代码  看这两个文件的关系 摸索出规律来 改代码就行了


对参数不懂的可以看 jni.h 里面的东西!相当于是个大类库!



最后 jni 就像普通 java  类一样,直接在别的地方调用就行了 









Jni中执行ndk-build,编译第三方静态库(.a)和动态库(.so)的Android.mk文件写法

Jni中执行ndk-build,编译第三方静态库(.a)和动态库(.so)的Android.mk文件写法 Android Studio编译JNI接口,当需要调用第三方静态库或者动态库时,正确...
  • langxm2006
  • langxm2006
  • 2017年01月16日 00:07
  • 1456

android JNI运行NDK编译成的可执行文件

1.android环境的可执行文件的生成 所谓的android下的可执行文件,其实就是一般的c/c++代码使用NDK编译出来的应用程序。它和linux下用gcc编译出来的程序和windows系统下...
  • csdn49532
  • csdn49532
  • 2016年02月19日 16:31
  • 2092

NDK探究之旅《一》——对jni和NDK的认识

最近在学习NDK开发,这是NDK篇的第一节。对jni和ndk的基本认识。 JNI的基本概念? jni是一个协议。这个协议用来沟通Java代码和外部的本地代码(c/c++),通过这个协议 ,Java代码...
  • androidstarjack
  • androidstarjack
  • 2017年05月03日 23:09
  • 2526

Android NDK混合使用java和C/C++代码--Hello JNI

简单记录下java调用C/C++函数其实很简单, 需要以下几个步骤: 1.在java代码中声明本地方法 2.实现Java本地接口(JNI)粘合层 3.创建Android Makefile文件 ...
  • cicilover
  • cicilover
  • 2014年08月21日 15:58
  • 986

使用IntelliJ IDEA 编译Android JNI

使用IntelliJ IDEA首先需要导入Android SDK
  • github_35096760
  • github_35096760
  • 2016年11月15日 15:13
  • 1053

NDK 与 JNI 的关系

简介  JNI是java语言提供的Java和C/C++相互沟通的机制,Java可以通过JNI调用本地的C/C++代码,本地的C/C++的代码也可以调用java代码。JNI 是本地编程接口,Java和...
  • banketree
  • banketree
  • 2013年10月09日 11:50
  • 36385

Android studio NDK-JNI 编译so文件

Android studio NDK-JNI 编译so文件上篇我们编写了NDK代码了。也调用到了C/C++的方法,这篇我们来编译成动态库so文件, 在编译生成SO文件需要配下Android.mk文件...
  • xj626361950
  • xj626361950
  • 2016年08月25日 13:44
  • 1997

Android Studio下用NDK,JNI技术实现java和C/C++互调(初探)

一、Andriod NDK原理什么是NDK(android native develop kits ):android 本地开发工具集 ,可以把c/c++ ->编译成一个 linux下可以执行的二进制...
  • pxhero2012
  • pxhero2012
  • 2016年10月26日 11:13
  • 1965

NDK基础(java ,c/c++, jni之间的关系及java和c/c++之间的相互调用)

1.java,c/c++,和jni之间的关系 java和c/c++可以相互调用,是因为java虚拟机中的JNI。简单的说就是用c/c++编写一个动态链接库让Java虚拟机去调用。(在windows...
  • lishihaojie
  • lishihaojie
  • 2015年05月28日 09:27
  • 965

Android studio jni编译以及第三方so库的引用

本编译环境在 androidstudio2.0 以上。 一下为build.gride文件 android { compileSdkVersion 22 buildTools...
  • sinde12
  • sinde12
  • 2016年07月28日 19:26
  • 1024
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:安卓开发ndk的编译顺序 和 jni的简单调用
举报原因:
原因补充:

(最多只允许输入30个字)