Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android NDK R9環境配置,開發教程

Android NDK R9環境配置,開發教程

編輯:關於Android編程

 

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的安裝目錄)

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316392816.png

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

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316392847.png

 

3,ANDROID_NDK_HOME: D:android-ndk-r9d (ndk的解壓的目錄)

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316392957.png

4,PATH: 將這 “%JAVA_HOME%in; %ANDROID_NDK_HOME%;”加到原有的後面。

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316392952.png

 

5,test

在 cmd 中 輸入 java –version,ndk-build –h ,沒有出現

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

 

 

Android NDK開發教程(請按照教程順序操作,本人親測)

工具環境(Android Developer Tools,android-ndk-r9d,Android4.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默認自動編譯。在目錄 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_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

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程序

打開windows cmd,cd到 workspaceNDKhi 目錄下,輸入 ndk-build 命令

若成功如下圖:

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316392915.png

 

編譯鏈接成功後,會在 工程NDKhi的libs/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

data-cke-saved-src=https://www.android5.online/Android/UploadFiles_5356/201702/2017022316392944.png

 

 

 


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved