歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 基於Android NDK開發實踐案例解析

基於Android NDK開發實踐案例解析

日期:2017/3/1 9:59:40   编辑:Linux編程

本案例主要介紹如何利用NDK工具在Android上進行C/C++相關開發,通過生成的JNI接口,編寫C/C++函數,編譯生成so庫,並調用so庫,在Android應用層上實現int型加法操作,字符串顯示操作和往/sdcard中文件yao.txt寫入數據操作。

1:案例分析

在進行Android本地項目開發時,我們需要用到自己的底層函數(.c或.cpp文件)和相關so庫,Google提供的NDK開發工具可以幫助我們解決這個問題,按照相關開發流程,我們可以在Android開發項目中調用本地的so庫,實現本地開發模塊。

2:開發環境

a:Eclipse (Galileo版本)
b:Android sdk 2.2 (注:NDK開發要求sdk 1.5以上版本)
c:jdk1.6
d:Android-ndk-r17b(注:這是最新版本ndk,這個版本是不需要用到cygwin工具,推薦使用此版本

(注:2、3和4都需要配置環境變量,這個特別提醒一下。配置好以後可以在cmd輸入相關命令測試一下環境變量是否配置成功。)

3:新建Android工程

這個比較簡單,按照步驟一步一步就可以,這裡需要繼承Activity (底層的操作要在Activity上顯示)。

4:編寫native方法

這裡編寫三個native方法,第一個用於int型加法操作,第二個用於字符串操作,第三個用於向/sdcard的yao.txt文件中寫入數據。

publicclass NDKTest {

//加法native方法

publicnativeint jniAdd(int a,int b);

//文本顯示native方法

publicnative String jniGetString();

//向/sdcard中寫入文件native方法

publicnativevoid jniWrite();

//三種方法通過libNDKDev-jni.so庫文件來實現

static

{

System.loadLibrary("NDKDev-jni");

}

}

5:生成.h文件

在cmd模式下,進入工程下的bin文件目錄,執行javah命令,如下圖所示

從上圖可以看到,生成了org_yao_ndk_NDKTest.h文件,進入此文件看看生成了哪些JNI接口,如下圖所示:

從上圖可以看到,生成了3個相應的JNI接口,注意其命名方式,Java_org_yao_NDKTest_Method。

6:編寫.c文件

按照要求,編寫相應的.c文件(.cpp文件也是可以的)注.c文件不需要同.h文件名字一樣,而且上面生成的.h文件到此已經沒有什麼價值了,可以直接刪掉。不過.c文件裡面需要#include <jni.h>頭文件。

7:編寫Android.mk配置文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := NDKDev-jni

LOCAL_SRC_FILES := NDKTest.c

include $(BUILD_SHARED_LIBRARY)

Copyright © Linux教程網 All Rights Reserved