Ubuntu下配置Android NDK开发环境

Posted 小喽啰A

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu下配置Android NDK开发环境相关的知识,希望对你有一定的参考价值。


配置过程:

一、下载并配置android ndk

1、下载地址:ndk-linux-32bit 这个是32位操作系统

2、解压到 /opt/ 目录下,这个目录是我的习惯。

3、配置环境变量    

sudo vim /etc/profile
在PATH环境变量中添加ndk-build的路径

export NDK_PATH=/opt/android-ndk-r9b
export PATH=$JAVA_HOME/bin:$PATH:$NDK_PATH
更新环境变量

source /etc/profile

二、HelloNDK程序

1、新建一个项目,并写一个native的方法,我这里就写在了MainActivity中了。

public native String helloFromJava();
2、在HelloNDK项目的跟目录下创建一个jni目录,并在该目录下编写c代码文件,我的c代码为hello,c ,内容为:

#include <jni.h>
#include <stdio.h>
/*
 * 函数命名规则:
 * Java+_+包名(包名中的.使用_代替)+_+类名+native方法名
 */
jstring Java_com_example_hellondk_MainActivity_helloFromJava(JNIEnv *env,
		jobject obj) 
	char *str = "Hello JNI";
	printf("%s\\n", str);
	return (*env)->NewStringUTF(env, str);

注:使用cdt编辑c代码的时候可能会出现一大堆黄色波浪线的提示(Unresolved inclusion: <jni.h>),原因是eclipse找不到头文件。

      解决这个问题的方法是:在当前项目跟目录下New Folder,点开Advanced,选中Link to alternate location(Linked Folder),然后添加ndk中include的目录,我的添加的目录是:/opt/android-ndk-r9b/platforms/android-19/arch-x86/usr/include ,Finish,刷新下项目就可以了。

3、编写Adnroid.mk文件;在jni目录下创建Android.mk文件,内容为:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := Hello
LOCAL_SRC_FILES := hello.c

include $(BUILD_SHARED_LIBRARY)
    这个文件在/opt/android-ndk-r9b/docs/ANDROID-MK.html有实例代码, 标题为Simple example:的地方

注:

    LOCAL_PATH := $(call my-dir) //记录Android.mk 文件位置 (绝对目录) ;call my-dir  得到当前文件夹路径
    include $(CLEAR_VARS) //初始化参数信息 ;CLEAR_VARS 是清空参数信息的意思
    LOCAL_MODULE    := hello-jni //进行交叉编译后 生成可执行的2进制文件的名字
    LOCAL_SRC_FILES := hello-jni.c // 指定参与交叉编辑的c的源文件 ;多个C文件 用空格分隔 
    include $(BUILD_SHARED_LIBRARY) //指定编译后 生成的库文件的类型
    BUILD_SHARED_LIBRARY  是指动态链接库
    BUILD_STATIC_LIBRARY  是指静态链接库

4、编译c代码,在shell下进入当前项目的jni目录,执行ndk-build,刷新该项目,就会发现libs目录下多出来一个armeabi的目录。

5、使用c函数,在写native方法的类中添加一个静态代码块,在该代码块中将刚刚生成的lib库load进来即可像调用普通方法一样调用native方法了。

static 
	System.loadLibrary("Hello");


右击查看大图。。。


环境变量配置


运行结果




      

以上是关于Ubuntu下配置Android NDK开发环境的主要内容,如果未能解决你的问题,请参考以下文章

怎么样在ubuntu环境下配置sdk

一定能成功的Android NDK环境配置教程

Ubuntu 12.04 32位 eclipse android SDK NDK开发环境搭建

Eclipse下Android的NDK开发环境配置

ubuntu下android ndk编译环境搭建方法

Eclipse下搭建Android的NDK开发环境