android的NDK安装及工程实例
本文有些转载,分结合自己试验所得。
本文操作系统win7 64位, DNK r10版本
1)打开Android开发者的官网 http://developer.android.com/ 找到Develop点击。如果页面打不开,通过代理来访问。
2)本人下载64位的DNK,解压下载的android-ndk32-r10-windows-x86_64.zip,将其放到你想要的目录下。
注:R7之前的版本,必须要安装Cygwin才能使用NDK。从R7开始,Windows版本的NDK提供了一个ndk-build.cmd脚本,可以直接利用这个脚本编译。想要做到这一 点,只要为Eclipse Android工程添加一个Builder,就能实现Eclipse的自动编译NDK,这一点在后面的步骤会有介绍
3) NDK实例的实现
启动Eclipse,新建Android工程(此处名为TestNDK),如图所示:
4)加入DNK的路径
菜单栏Windows->preferences->android->DNK
5) 配置 javah 到 eclipse“(可选),主菜单->Run->External Tools->
External Tools Configurations->Program”,如下图所示,只配置了界面中的Main界面:
目的:此步只是将javah工具添加到eclipse中,javah功能生成.h文件,由于函数从java到c/c++需要按一定的格式标准,并且可以函数名复杂,因此经常使用Javah工具生成函数名,若不添加可以通过cmd控制窗口使用此工具。
Javah工具简单的使用方法
其中java中各个命令的意思是
-d <目录>输出目录
-jni 生成 JNI样式的头文件(默认)
-d 生成的.h文件存放的位置目录,
-classpath <路径> 用于装入类的路径,此处使用的是.class文件,并非.Java文件,同时注意包的概念,例如:
Main.java文件位置如上图所示
Main.java的全部内容如下图所示: package mwic32为包定义,-classpath 为包的目录,而非.class文件的目录,不明白一会演示
-jni 是必须的,我因没加导致javah使用错误,因为我们已经加了包的路径了,但保重可能有很多.class类,我们需要javah哪个类呢,由此-jni定义,-jin 内容:包名+类名(没有.class,是类名字)
例子:使用cmd控制台cd到.java文件目录,使用javah工具如下图,其中.bin文件夹自己创建存放包,bin文件夹为空,javac之后产生包
写了这么多就是将javah配到eclipse里面去时,里面参数如何配置
6) 创建builder,此builder的作用是将之前配置好的javah工具添加到builder中,按Ctrl + B,进行build all功能,在编译时同时javah:
选中工程->右击->Properties->builder->import,不要create。
7)创建Android.mk和.cpp文件以及库:
选中工程->右击->Android tools->add native support,填写库名,自动完成以上功能
8)创建.java文件,此文件即是某部分你要在.cpp中实现其功能的文件;
需要完成的函数声明如下:static public native int add(int x, int y); (static可不要,native是必须要)
9)生成.h文件:主菜单->Run->External Tools->(你刚才创建的localtalkiejavah工具)。
生成.h,在.cpp文件实现其函数即可,
10)本身完成工作后,run as 总是异常中断,经网上之如下原因,解决办法extern "C"{ 已完成的函数定义 }。
原因:
JNIEnv *env参数的使用
所有JNI接口的第一个参数是JNIEnv *env, 在C中,使用方法是
(*env)->NewStringUTF(env, "Hello from JNI!");
但在C++中,其调用方法是
env->NewStringUTF("Hello from JNI!");
为什么有这种区别呢,看看jni.h中关于JNIEnv的定义就可以知道了:
#if defined(__cplusplus)
typedef _JNIEnv JNIEnv;
#else
typedef const struct JNINativeInterface* JNIEnv;
#endif
可以看到,对于C和C++,定义有所不同,主要原因是C不支持类,所以采用了一种变通的方法。
以上工作已完结,自己一些猜测:
首先javah可不必加入eclipse,我们只是希望更方便才加入的,
其次,加入javah之后也可不必创建builder,我们只是希望更方便,编译时即可实现javah,
实际编写android.mk才是技术,只是刚创建简单的,自己也没学如何编写,就先写到这。
补充:有的人create一个builder,加入DNK的ndk-build.cmd,参照:http://www.th7.cn/Program/Android/201409/287799.shtml
我是即import了,同时按照此create了,之前遗忘,特补充。
android的NDK安装及工程实例相关推荐
- Android之NDK开发的简单实例
NDK全称为Native Development Kit,是本地开发工具集.在Android开发中,有时为了能更好的重用以前的C/C++的代码,需要将这些代码编译成相应的so,然后通地JNI以供上层J ...
- android图文介绍NDK安装及简单jni demon的实现
(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.背景 android NDK可以用来编译android的native方法,也可以将c和c++的代码编译成.s ...
- ubuntu14.04 64bit主机下面安装android的NDK开发环境
通过wget工具下载bin包: $ wget -c http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin 1 2,因为下 ...
- Android ndk 安装教程 以及环境变量配置
现在android ndk 也是非常的方便 第一步 第二步搜索sdk 第三步 把界面切换到SDK Tools 界面 选中ndk 然后在点击Apply 下载即可 然后就是查看ndk 安装到那个目录下面 ...
- 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )
文章目录 一.Visual Studio 中安装 " 使用 C++ 的移动开发 " 开发库 二.Visual Studio 中安装的 Android SDK 和 NDK 位置 三. ...
- Appium 移动端自动化 - Android SDK的安装与配置,使用安卓SDK连接手机实例演示
Android SDK 的安装与配置演示 第一章:Android SDK 的安装 ① 下载 ② 安装过程 ③ 配置 第二章:连接手机 USB 调试 ① 一加8手机连接演示 第一章:Android SD ...
- android ndk如何安装,android NDK安装
Android NDK 是运行于Android 平台上的Native Development Kit 的缩写.Android 应用开发者可以通过NDK 调用C 或C++ 本地代码. NDK的作用: 1 ...
- Android之NDK开发学习总结
Android之NDK开发 http://www.cnblogs.com/devinzhang/archive/2012/02/29/2373729.html 一.NDK产生的背景 Android平台 ...
- Android下NDK开发环境搭建
Android下NDK开发环境搭建 1. AndroidNDK安装与配置 1.1 NDK简介 Android NDK是一套允许开发人员使用本地代码(如C/C++)进行Android APP部 ...
- Android之NDK开发
一.NDK产生的背景 Android平台从诞生起,就已经支持C.C++开发.众所周知,Android的SDK基于Java实现,这意味着基于Android SDK进行开发的第三方应用都必须使用Java语 ...
最新文章
- python html解析查找字符串_用python的BeautifulSoup分析html
- 垃圾邮件过滤 php,垃圾邮件过滤功能
- php直接的模块接口,api(接口)模块
- 10个顶级的CSS3代码生成器
- 微服务很香--麻辣味,但要慢慢消化
- Silverlight 5 Beta新特性[5]隐式模板支持
- Scrum Meeting博客目录
- 非合作博弈篇——非合作博弈的矩阵表示
- php中字符串的截取函数,PHP字符串截取和截取函数的介绍
- java application.doevents_Application.DoEvents()笔记
- 一文搞定卷积神经网络——从原理到应用
- swift混编调用oc编写的Xib UIView出现[Storyboard] Unknown class in Interface Builder file.问题的解决
- springboot+uniapp上传图片
- 计算机软件定时运行,win10系统设置定时运行指定软件的详细方案
- BUUCTF:LSB
- uniapp ----小程序上下滑动页面,视频自动播放(完整代码)
- easyrecovery professional专业版下载 v14.0.0.0 专业版介绍
- SQL注入入侵动网SQL
- 杭电多校3-Hdu6797 Tokitsukaze and Rescue
- Google Code Jam程序设计大赛中国人获冠亚军