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.cpp

include $(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 {

	@Override
	protected 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

时间: 2024-10-05 13:58:17

Android JNI的第一步——从HelloWorld开始的相关文章

Android JNI入门第一篇——HelloJni

android支持使用NDK开发C程序,关于配置NDK环境问题应该不用再赘述了,这个网上有很多,这里通过一篇实例来讲述简单的JNI开发,大家可以参考这篇文章(Get Your Eclipse-Integrated NDK On!)搭建Eclipse编译C语言为so文件的开发环境. native方法实现步骤如下: 1.在Java中声明native()方法,然后编译(javac): 2.用javah产生一个.h文件: 3.编写包含.h文件的c文件 4.编译c文件 5.使用编译成功的so文件. 第一步

Eclipse+超快速的模拟器Genymotion开展Android申请书(第一步:安装和配置Genymotion)

一.安装和配置Genymotion (1)因为Eclipse自带SDK模拟器,慢启动,别说 今天给大家介绍一个更快速的模拟器Genymotion (2)第一次去Genymotion在官方网站上注册一个账号.此帐户是非常有用的 请记着你的账号和password(我用的是QQ好注冊的) 网址是:https://www.genymotion.com/ (3)填好信息之后 点击 Creat account 就可以注冊  然后到你的邮箱激活 就好了! (4)然后去下载genymotion  鉴于下载的比較

Eclipse+超快的模拟器Genymotion开发Android应用(第一步:安装及配置Genymotion)

一.安装及配置Genymotion (1)由于Eclipse中自带的SDK模拟器,启动之慢,不说了 现在给大家介绍一种比较快的模拟器Genymotion (2)首先去Genymotion的官网注册一个账号,这个账号是有用的 请记着你的账号和密码(我用的是QQ好注册的) 网址是:https://www.genymotion.com/ (3)填好信息之后 点击 Creat account 即可注册  然后到你的邮箱激活 就好了! (4)然后去下载genymotion  鉴于下载的比较慢,特意传到云盘

android JNI入门-学习笔记

JNI入门-学习笔记 可执行文件 Windows - *.exe | linux - *.elf c函数库文件 Windows - *.dll | linux - *.so 批处理文件 Windows - *.bat | linux - *.sh 工具 NDK -- native developer kits Cygwin -- Linux系统模拟器 安装过程要点: --安装时可以联网安装也可以通过本地文件安装(如果有本地文件) --Select Packages:没必要全部安装,安装Devel

Ubuntu下编译Android JNI实例全过程

第一步:保证make和gcc可用 在shell中输入make-v,不报错就是对的.(可参考http://wenku.baidu.com/view/d87586c24028915f804dc24a.html.) 在shell中输入gcc-v,不报错就是对的. 第二步:安装NDK 下载NDK后,设置环境变量: 将android-ndk的路劲加到环境变量PATH中:sudogedit /etc/environment 然后再让这个更改的环境变量立即生效:source /etc/environment

基于Eclipse的Android JNI层测试应用开发过程记录

前言 本文记录一个Java层与JNI层参数与数据交互的应用程序开发过程,为实现一个功能完整的带Java与JNI的应用程序打下基础.本文假设读者已搭建好Android的Eclipse与NDK开发环境,包括通过ADB连接手机的配置. 1. 构建基本的Android应用程序 1.1 引导界面配置 打开Eclipse,"File"->"New"->"Android Application Project",在弹出界面,配置如下(红色框表示不是

基于Eclipse的Android JNI层測试应用开发过程记录

前言 本文记录一个Java层与JNI层參数与数据交互的应用程序开发过程.为实现一个功能完整的带Java与JNI的应用程序打下基础. 本文如果读者已搭建好Android的Eclipse与NDK开发环境,包含通过ADB连接手机的配置. 1. 构建主要的Android应用程序 1.1 引导界面配置 打开Eclipse,"File"->"New"->"Android Application Project",在弹出界面,配置例如以下(红色框表

android JNI调用(转)

Android jni开发资料--NDK环境搭建 android开发人员注意了 谷歌改良了ndk的开发流程,对于Windows环境下NDK的开发,如果使用的NDK是r7之前的版本,必须要安装Cygwin才能使用NDK.而在NDKr7开始,Google的Windows版的NDK提供了一个ndk-build.cmd的脚本,这样,就可以直接利用这个脚本编译,而不需要使用Cygwin了.只需要为Eclipse Android工程添加一个Builders,而为Eclipse配置的builder,其实就是在

Android JNI 入门

Android JNI (Java Native Interface)就是为了实现java 与其他语言相互调用的语言.当然在Android就是为了跟C,C++的调用.在Linux ,Mac中Java最后调用的就是.so的文件,在Window中就是.dll文件. 那么Java到C怎么对应起来?调用Java的哪个方法就是C中的哪个方法呢?通过在Java类中声明native的方法就开始了. 新建一个Android工程HelloNDK.新建一个类GetString public class GetStr