Android NDK開發介紹

來源:互聯網
上載者:User

標籤:android   java   jni   ndk   

一、 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、開發使用Demonew一個普通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平台,當然可以通過配置編譯出其他平台的)。


Android NDK開發介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.