歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu NDK Demo

Ubuntu NDK Demo

日期:2017/2/28 16:16:33   编辑:Linux教程

前面文章介紹了 Ubuntu 安裝 GNU Toolchain for ARM,有了這個交叉編譯工具主要是為了Android的移植做了准備。下面介紹Android中的NDK開發。

1、從這裡下載最新版的NDK,現在最新版名字是android-ndk-r5b-linux-x86.tar.bz2.tar,解壓,解壓後名字為android-ndk-r5b,接下來設置PATH環境變量:export PATH=$PATH:/home/stone/android-ndk-r5b,設置該環境變量是因為等會在android-ndk-r5b目錄下的ndk-build程序要被用到;

2、上面這樣就配置好了NDK的開發環境,接下來就創建一個項目來測試一下,步驟如下:

1)、使用Eclipse創建一個Android項目,名字為“HelloNDKJNI”,Build Target設置為“Android 2.2”,Application Name設置為“HelloNdkJni”,Package Name設置為“com.stone”,Create Activity設置為“.HelloNdkJni”,Min SDK Version設置為“8”;2)、接下來創建C語言庫,在Eclipse的Package Explore裡面的HelloNDKJNI項目下創建目錄“jni”,並在該目錄下創建兩文件“Android.mk”和“hello-ndk-jni.c”,如下圖所示:

Android.mk文件內容如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := hello-ndk-jni

LOCAL_SRC_FILES := hello-ndk-jni.c

include $(BUILD_SHARED_LIBRARY)

hello-ndk-jni.c文件內容如下:

#include

#include

//注意這裡是又規則的

jstring Java_com_stone_HelloNdkJni_stringFromNDKJNI( JNIEnv* env,jobject thiz )

{

return (*env)->NewStringUTF(env, "Hello from NDK JNI !");

}

3)、編譯創建的C庫,打開終端,進行步驟1中的設置PATH環境變量操作(如果有進行,則可跳過),進入到創建的HelloNDKJNI項目中的jni目錄,執行命令ndk-build,此時會在項目中生成libs和obj目錄,並在裡面生成相應的文件,運行結果如下圖所示:

4)刷新Eclipse中的Package Explore中的HelloNDKJNI項目,此時obj和libs目錄也添加進去了,在obj/armeabi分支下也多了libhello-ndk-jni.so文件,hello-ndk-jni這個名是根據2-2)步中的Android.mk文件中的LOCAL_MODULE決定的,接下來修改src/com.stone分支下的HelloNdkJni.java文件,最後的文件內容如下:

package com.stone;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

public class HelloNdkJni extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

TextView tv =new TextView(this);

tv.setText(stringFromNDKJNI());

setContentView(tv);

}

public native String stringFromNDKJNI();

static{

System.loadLibrary("hello-ndk-jni");

}

}

更多的NDK例子,可以參考第1步中解壓後目錄下的samples目錄下的項目。

參考見http://www.linuxidc.com/Linux/2011-04/35239p2.htm

Copyright © Linux教程網 All Rights Reserved