Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android NDK開發介紹

Android NDK開發介紹

編輯:關於Android編程

一、 JNI基礎介紹

JNI is the Java Native Interface. It defines a way for managed code (written in the Java programming language) to interact with native code (written in C/C++).
JNI(Java本地接口):定義一種方式,使得Java代碼能與C代碼或者Dynamic Shared Libraries(動態共享庫)進行交互。
調用方式:
\
C代碼通過編譯生成一個.so動態共享庫,供java代碼調用。

二、 NDK開發介紹

NDK 是 Google為Android提供做C/C++代碼開發的工具包,包含GCC的編譯器以及各個平台(arm,X86,MIPS)的相關頭文件,交叉編譯的一些平台相關文件等。可在google官網上下載。

1、Eclipse配置下載的NDK資源包位置

解壓下載的NDK包,android-ndk-r9b-windows-x86.zip
Preferences——>Android——>NDK,配置ndk所在位置

2、開發使用Demo

new一個普通Android工程TestJni;
右鍵項目,Android Tools——>Add Native Support,輸入想要生成動態庫名字:TestJni;
此時,會多出一個jni文件夾,包括一個TestJni.c和Android.mk文件。
Android.mk 配置編譯相關動作,內容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := TestJni
LOCAL_SRC_FILES := TestJni.c
include $(BUILD_SHARED_LIBRARY)

 

 

注:

BUILD_SHARED_LIBRARY:表示編譯目標為動態共享庫,即生成.so文件

LOCAL_MODULE:編譯目標名

LOCAL_SRC_FILES:編譯源文件

 

TestJni.c即本地C代碼,本例中只加了一個Hello字串的返回,此方法名的定義,為了使得java代碼能夠找到相應的native代碼,其規范為:Java+包名+class+Method,否則找不到。
當然可以有另外一種方法映射的途徑,可以實現java到C方法的映射,在此不詳細介紹了。

 

jstring Java_com_pingtech_testjni_TestJni_sayHello( JNIEnv* env,
        jobject thiz )
{
	return (*env)->NewStringUTF(env, "Hello from JNI !");
}

3、JNI java代碼

public class TestJni{
		public static native String sayHello();
		static{
			System.loadLibrary("TestJni");
		}
}
使用靜態代碼塊,首先加載TestJni.so 動態共享庫,sayHello為C中本地方法,前面加一個native修飾符即可。這個我們直接可以通過TestJni.sayHello();在Java代碼中調用C代碼了。

4、編譯運行

Project build all,可檢測本地代碼錯誤,生成.so庫(lib/armeabi下,這個對於arm平台,當然可以通過配置編譯出其他平台的)。

 


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