码迷,mamicode.com
首页 > 移动开发 > 详细

Android NDK R9环境配置,开发教程

时间:2014-08-29 22:43:38      阅读:395      评论:0      收藏:0      [点我收藏+]

标签:android开发   android ndk   

最近,在学习android ndk开发,配置环境的时候遇到了些问题,总算不负有心人……在这里记录哈过程,与筒子们分享哈……想学NDK的筒子们有福啦……bubuko.com,布布扣

教程本人亲测,非copy的……

如有什么不明白的地方,可以留言bubuko.com,布布扣

大神也可以进来瞧瞧有什么不对的地方,请指教两招bubuko.com,布布扣

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

NDK是一个工具集,可让您实现您的应用程序使用本机代码的语言,如CC + +Android NDK 是在SDK前面又加上了原生二字,即Native Development Kit,因此又被Google称为“NDK”

在此之前,Android平台的第三方应用程序均是依靠基于JavaDalvik特制虚拟机进行开发的。原生SDK的公布可以让开发者更加直接的接触Android系统资源,并使用传统的CC++语言编写程序,并在程序封包文件(.apks)中直接嵌入原生库文件。

NDK的公布可以让开发者更加直接的接触Android系统资源,并使用传统的CC++语言编写程序,并在程序封包文件(.apks)中直接嵌入原生库文件。NDK的公布让原来从事C语言开发者也参与到Android平台,也让java开发者方便的调用底层操作,特别是游戏开者,对引擎,速度等要求较高者,有了新的工具来实现所需功能,做出更加完美的程序。

对于某些类型的应用程序,这可以是有益的,所以你可以重用现有的代码库,这些语言编写的,但大多数应用程序不需要NDK

Android NDK R9更新:

Android NDK R9 主要是为了Android 4.3开发准备的

随着Android 4.3平台的发布,谷歌还发布了Android NDK (r9)的更新版本。新的NDK允许你本地访问Android 4.3中的OpenGL ES 3.0 API以及其他稳定的API。如果你在游戏或应用中使用了高性能图形功能,可以采用该版本。 

Android NDK 是什么?

Android NDK全称:Native Development Kit,即本地开发包。

1NDK是一系列工具的集合。

NDK提供了一系列的工具,这些工具对开发者的帮助是巨大的。它们能帮助开发者快速开发C(或C++)的动态库,并能自动将so库和java应用一起打包成apk

NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出哪些文件需要编译编译特性要求等),就可以创建出so库。NDK可以自动地将soJava应用一起打包,极大地减轻了开发人员的打包工作。

2NDK提供了一份稳定、功能有限的API头文件声明。Google明确声明该API是稳定的,在后续所有版本中都稳定支持当前发布的API。从该版本的NDK中看出,这些API支持的功能非常有限,包含有:C标准库(libc)、标准数学库(libm)、压缩库(libz)、Log库(liblog)。

 

Android NDK配置教程:

工具环境(Android Developer Toolsandroid-ndk-r9dAndroid4.3 API18

对于Windows环境下NDK的开发,如果使用的NDKr7之前的版本,必须要安装Cygwin才能使用NDK;从r7开始,Google的提供了一个ndk-build.cmd的脚本,可以直接用它编译,而不需要使用Cygwin了。可以通过,配置path变量,直接在cmd下面运行ndk-build命令即可对android工程中的项目进行编译了。

1,JAVA_HOME : C:\Program Files (x86)\Java\jdk1.7.0_17  (jdk的安装目录)

bubuko.com,布布扣

2CLASSPATH: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (固定不变)

bubuko.com,布布扣

 

3ANDROID_NDK_HOME: D:\android-ndk-r9d (ndk的解压的目录)

bubuko.com,布布扣

4PATH: 将这 “%JAVA_HOME%\bin; %ANDROID_NDK_HOME%;”加到原有的后面。

 bubuko.com,布布扣

 

5test

在 cmd 中 输入 java versionndk-build ,没有出现

xxx不是内部或外部命令”即成功

 

 

Android NDK开发教程(请按照教程顺序操作,本人亲测)

工具环境(Android Developer Toolsandroid-ndk-r9dAndroid4.3 API18

1, 在 ant中(eclipse),新建一个android项目(NDKhi)。


2, 在 src下的com.example.ndkhi 新建 jniClient.java 文件。

此文件作用:

1,加载本地C库文件(.so)。

2,声明本地C库中的方法(static public native String sayHi())。

jniClient.java源码:

package com.example.ndkhi;

public class jniClient {

 static {

        System.loadLibrary("Ndkhi");

    }

static public native String sayHi();

}


3, 编译android文件

eclipse默认自动编译。在目录 workspace\NDKhi\bin\classes\com\example\ndkhi 中 查找 jniClient.class 文件是否存在,若不存在,手动编译android工程。


4, 使用 javah 工具 生成 c语言的.h头文件

在 工程NDKhi 中建立一个 名为 jni 的文件夹,打开window cmdcdjni目录下,

输入 javah –classpath ../bin/classes/com.example.ndkhi ,若命令执行成功,会在jni目录中生成 com_example_ndkhi_jniClient.h 文件。

刷新 eclipse中的工程NDKhi,即可见com_example_ndkhi_jniClient.h 文件。

com_example_ndkhi_jniClient.h源码(此文件为自动生成,一般不用修改):

/* DO NOT EDIT THIS FILE - it is machine generated */

#include <jni.h>

/* Header for class com_example_ndkhi_jniClient */

 

#ifndef _Included_com_example_ndkhi_jniClient

#define _Included_com_example_ndkhi_jniClient

#ifdef __cplusplus

extern "C" {

#endif

/*

 * Class:     com_example_ndkhi_jniClient

 * Method:    sayHi

 * Signature: ()Ljava/lang/String;

 */

JNIEXPORT jstring JNICALL Java_com_example_ndkhi_jniClient_sayHi

  (JNIEnv *, jclass);

#ifdef __cplusplus

}

#endif

#endif


5, 编写c语言程序

jni目录下,新建 名为 com_example_ndkhi_jniClient..c 的文件,实现 com_example_ndkhi_jniClient.h中声明的函数即可。

com_example_ndkhi_jniClient..c源码:

#include <com_example_ndkhi_jniClient.h>

JNIEXPORT jstring JNICALL Java_com_example_ndkhi_jniClient_sayHi

  (JNIEnv *env, jclass arg)

{

return (*env)->NewStringUTF(env, "android ndk hi!!!");

}

 

6Android.mk 文件(简单理解为 makefile

   在 jni目录下,新建 名为Android.mk 文件。

内容如下:

LOCAL_PATH :$(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := Ndkhi

LOCAL_SRC_FILES := com_example_ndkhi_jniClient.c

include $(BUILD_SHARED_LIBRARY)

 修改xxx.c文件,和 Ndkhi 为自己新建的.c文件,的要生成的.so


7, 编译,链接C程序

打开windows cmdcd到 workspace\NDKhi 目录下,输入 ndk-build 命令

若成功如下图:

 bubuko.com,布布扣

   

   编译链接成功后,会在 工程NDKhilibs/armeabi/下 生成 libNdkhi.so,

 

8, 编写MainActivity.java

源码:

package com.example.ndkhi;

import android.os.Bundle;

import android.R.string;

import android.app.Activity;

import android.view.Menu;

import android.widget.TextView;

public class MainActivity extends Activity {

private TextView tView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

tView = (TextView) findViewById(R.id.tv);

String strHi = jniClient.sayHi();

tView.setText(strHi);

}

}

 

9运行android 工程 NDKhi

 bubuko.com,布布扣

大功告成!!!

源码下载 

http://download.csdn.net/detail/gaoxin12345679/7841117

 

 

 


Android NDK R9环境配置,开发教程

标签:android开发   android ndk   

原文地址:http://blog.csdn.net/gaoxin12345679/article/details/38930879

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!