AG游戏网站_亚洲最佳百家乐游戏平台_AG环亚集团_搜狐娱乐

IT科技资讯

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

文章来源:http://www.thewebtvdb.com    时间:2019-02-01

  

Android 亚虎娱乐NDK R9环境配置,开发教程

 

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

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

NDK的公布可以让开发者更加直接的接触Android系统资源,并使用传统的C或C++语言编写程序,并在程序封包文件(.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,即本地开发包。

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

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

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

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

  Android NDK配置教程: 工具环境(Android Developer Tools,android-ndk-r9d,Android4.3 API18)

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

 

 

 

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

2,CLASSPATH: .;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar (固定不变)

 

3,ANDROID_NDK_HOME: D:AAAroid-ndk-r9d (ndk的解压的目录)


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

 

5,test

在 cmd 中 输入 java –versioAAAAk-build –h ,没有出现

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

 

 

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

工具环境(Android Developer Tools,android-ndk-r9d,Android4.3 API18)

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

&nbAAAAAA>

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();

}

 AAAAAAA>3, 编译android文件

eclipse默认自动编译。在目录 workspaceNDKhiinclassescomexample dkhi 中 查找 jniClient.class 文件是否存在,若不存在,手动编译android工程。

 

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

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

输入 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

/* Header for class com_example_ndkhi_jniClient */

 

#ifndef _Included_com_example_ndkhi_jniClientAAAAAAA>#define _Included_com_example_ndkhi_jniClient

#ifdef __cplusplus

extern C {

#endif

/*

* Class: com_examplAAAAkhi_jniClient

* Method: sayHi

* Signature: ()Ljava/lang/String;

*/

JNIEXPORT jstring JNICALL Java_com_example_ndkhi_jniClient_sayHi

(JNIEnv *, jclass);

#ifdef __cplusplus

}

#endifAAAAAAA>#endif

 

5, 编写c语言程序

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

com_example_ndkhi_jniClient..c源码:

#include

JNIEXPORT jstring JNICALL Java_com_example_ndkhi_jniClient_sayHi

(JNIEnv *env, jclass arg)

{

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

}

 

6,Android.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程序AAAAAAA>打开windows cmd,cd到 workspaceNDKhi 目录下,输入 ndk-build 命令

若成功如下图:

 

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

&nbsA;

8, 编写MainActivity.java。

源码:AAAAAAA>package com.example.ndkhiAAAAAAAA>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

 

 

 


AAAAAAAAA align="left">http://www.bkjia.com/Androidjc/872003.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/872003.htmlTechArticleAndroid NDK R9环境配置,开发教程 NDK是一个工具集,可让您实现您的应用程序使用本机代码的语言,如C和C + +。Android NDK 是在SDK前面又加上了...

本文源自: AG游戏网站

版权所有: Copyright ©2007-2018 AG游戏网站_亚洲最佳百家乐游戏平台_AG环亚集团_搜狐娱乐