Android JNI的第一步——从HelloWorld开始
第一步:配置NDK运行环境
两个工具包:
com.android.ide.eclipse.ndk_23.0.2.1259578.jar
android-ndk-r10(当然也可以是一些其他类似的工具包,如android-ndk-r8)
前者为搭建NDK环境时,必需的工具包。需要将其置于eclipse的plugins文件夹中。然后重启eclipse即可。
前者工具包下载连接
后者为eclipse运行JNI程序所需要的工具包,将其置于一个你习惯的路径下。放置好之后,进行环境变量的配置,如下图:
添加NDK路径:
在window工具栏中选择preferences选项进入Preferences对话框,如下:
上面所说的第一个工具包就是为产生上图中的3“NDK”的,如果不出意外,添加完第一个工具包后就会有这个选项了。然后上图中的第4步就是去添加我们的第二个工具包。
经过上面的步骤,我们的开发环境已经搭建完成了。
第二步:创建Android工程
新建Android工程:
新建项目和普通Android工程没什么不同。
添加本地支持:
新建好工程之后,我们就需要对其进行添加本地支持
此步操作完成之后,会自动生成Android.mk配置文件和相应的cpp文件,mk文件内容:
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := William_Hello_JNI
LOCAL_SRC_FILES := William_Hello_JNI.cppinclude $(BUILD_SHARED_LIBRARY)
而对于那个LOCAL_MODULE := William_Hello_JNI中的William_Hello_JNI则是在Java代码中需要去调用的Library,后面会有说明。
当然,这两步的前提还是你已经添加了第一个工具包。
编写C++代码:
接下来,就可以试着去写你的C++代码了(就在刚刚生成的那个William_Hello_JNI.cpp中去编写)。我的示例是这样的:
#include <jni.h>
#include <string.h>extern "C" {JNIEXPORT jstring JNICALL Java_com_demo_jni_MainActivity_sayhello(JNIEnv * env, jobject obj);
}JNIEXPORT jstring JNICALL Java_com_demo_jni_MainActivity_sayhello(JNIEnv * env, jobject obj) {return env->NewStringUTF("Hello From cpp.");
}
对于上面的C++代码可以看到有一个方法:JNIEXPORT jstring JNICALL Java_com_demo_jni_MainActivity_sayhello(JNIEnv * env, jobject obj);
其中的组成部分说明如下:
JNIEXPORT 固定部分,表示JNI外部引入
jstring 表示返回类型
JNICALL 固定部分,顾名思义,是表示此方法提供给JNI层去调用
Java 固定部分,表示后面的部分是Java代码的内容
com_demo_jni 是Java代码中的程序包名
MainActivity 表示相应方法所在的类名
sayhello 就是这里与Java代码中一一对应的方法名
编写Java代码:
对于Java代码第一步要做的事件就是引入C/C++中的库,这里的库就是我们在添加本地支持的时候生成的Android.mk文件中的LOCAL_MODULE的值。
例如我的工程中就是:
static {System.loadLibrary("William_Hello_JNI");
}
完整主函数,如下:
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);EditText showJNI = (EditText) findViewById(R.id.activity_main_jni_show);showJNI.setText(sayhello());}public native String sayhello();static {System.loadLibrary("William_Hello_JNI");}
}
运行效果图:
源码下载:
工程源码:http://download.csdn.net/detail/u013761665/8369031
参考
参考博文:http://blog.csdn.net/yf210yf/article/details/9264587
Android JNI的第一步——从HelloWorld开始相关推荐
- Android JNI入门第一篇——HelloJni
android支持使用NDK开发C程序,关于配置NDK环境问题应该不用再赘述了,这个网上有很多,这里通过一篇实例来讲述简单的JNI开发,大家可以参考这篇文章(Get Your Eclipse-Inte ...
- Eclipse+超快的模拟器Genymotion开发Android应用(第一步:安装及配置Genymotion)
一.安装及配置Genymotion (1)由于Eclipse中自带的SDK模拟器,启动之慢,不说了 现在给大家介绍一种比较快的模拟器Genymotion (2)首先去Genymotion的官网注册一个 ...
- Android studio创建第一个项目并运行
开发第一步就是输出Hello World,今天记录Android studio的第一步开发. 下面记录最简单的项目运行: 首先打开软件可以看到如下页面,我们创建一个新项目 这里我们需要给项目取一个名称 ...
- Qt For Android 第一步 环境配置
Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架.现在已经全面支持iOS.Android.WP. 当时Qt刚开始支持安卓的时候,忘记了是5.1还是5.0版本.自己写了一个H ...
- Android JNI初试之环境搭建,最新方式的HelloWorld
前言 最近有个图片识别的需求.需要使用OpenCV,于是研究起了JNI,发现很多资料过旧.绕了大圈.踩了几个坑.总结一下. 什么是JNI Java Native Interface , 实现Java和 ...
- Hello Android – 迈出android开发第一步
环境搭建基本上比较顺利,除了下载SDK需要花不少时间 L 比起.Net的开发环境,java总是需要DEV更多的自己动手,偶更喜欢傻瓜型的部署 J 构建HelloAndroid项目: 1. File - ...
- Qt 第一步 HelloWorld 的第一个程序
简言 Qt 是基于C++的 GUI 解决方案.QT简单易学(底层封装的好).跨平台.相关资料易得到. 开始写Qt 相关的文章的主要原因是,我本人在编写一个视频录制及相关处理的项目,写到一半发现.net ...
- android JIN 第一步 生成java转换成class然后再转化成.h文件
经过一番查找,可算搞定了java转成c的.h头文件的这第一步. 方法如下 第一步:创建 native方法的java类. 方法 m1和m2分别是调用native. package com.demo.st ...
- 开发Android第一步,安装SDK 1.6, 模拟器及安装游戏
转自:http://bbs.weiphone.com/read.php?tid=516501 开发Android第一步,安装SDK 1.6, 模拟器及安装游戏 windows 方法 (1) 下载 An ...
最新文章
- 语言生成不自闭迷宫_4招教你分清自闭症、多动症、发育迟缓、抑郁症的区别...
- OpenStack 虚拟机热迁移流程图
- 查看linux服务器硬盘IO读写负载
- Form表单插件jquery.form.js
- ECS事件通知之创建失败事件
- Uploadify jquery+flash+UploadHandler.ashx .(用)
- 2.4 shell 脚本基础
- Vue-cli 3.0+ 设置接口代理 设置vue.config.js的配置项
- Activity、View、Window的理解一篇文章就够了
- Java设计模式之工厂模式
- 用excel做数据分析
- PHP完全自学手册01.pdf
- (转)wincap抓包原理
- 阿里笔试之Java分词统计
- 罗斯蒙特333D信号转换器
- 璞华大数据HawkEye设备数字化管理之远程协助功能
- 机械加工工艺品配件的影响
- spring data jdbc 基本使用
- Reactive Extensions (Rx) 入门(5) —— Rx的事件编程③
- 让我们并肩作战—机房合作