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开发环境的主要内容,如果未能解决你的问题,请参考以下文章