Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> android NDK 教程一(初識JNI--hello world)

android NDK 教程一(初識JNI--hello world)

編輯:關於android開發

android NDK 教程一(初識JNI--hello world)


前言

android的知識太過龐雜了,自己如果學過了,但過一段時間不用了又會忘記。寫android NDK系列的博客呢,其一是為了鍛煉自己的寫作水平,其二是為自己所學過所掌握的一些知識做一下梳理、記錄,方便以後自己查閱。廢話不多說,先寫個hello world開始吧。

 

JDK安裝和配置路徑就不用說吧,為了能在命令行中使用ndk指令,需配置下系統環境,在系統變量path中添加ndk r10e的路徑。我的是安裝在:;D:\soft\android-ndk-r10e

\

 

JNI---hello world

創建android 工程hello world.

\

 

 

新建JniNative.java類作為jni的java層接口

\

 

 

通過javah指令生成.h頭文件

 

在命令行,進入到--<項目路徑>/bin/classes,執行如下指令:

javah-classpath . com.example.hellojni.JniNative

執行成功後,將在當前目錄下生成com_example_hellojni_JniNative.h的頭文件

\

 

在項目中新建jni目錄(JNI工程)

 

將生成的com_example_hellojni_JniNative.h拷到jni目錄下,創建Android.mk; AndroidAppliction.mk ; hellojni.c這三個文件。

Android.mk

LOCAL_PATH := $(call my-dir)
MY_LOCAL_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
#要編譯的c文件
LOCAL_SRC_FILES := hellojni.c
#日志庫引用,相當於java中的import log日志類
LOCAL_LDLIBS += -llog
#目標模組,要編譯的so庫名稱
LOCAL_MODULE := hellojni
#創建動態鏈接庫
include $(BUILD_SHARED_LIBRARY)

AndroidAppliction.mk

#目標平台,即在libs目錄下生產3個文件夾
APP_ABI := armeabi armeabi-v7a x86

hellojni.c

#include "string.h"
#include 
#include 
#include "android/log.h"
static const char *TAG="helloJNI";

//日志
#define LOGI(fmt, args...) __android_log_print(ANDROID_LOG_INFO,  TAG, fmt, ##args)
#define LOGD(fmt, args...) __android_log_print(ANDROID_LOG_DEBUG, TAG, fmt, ##args)
#define LOGE(fmt, args...) __android_log_print(ANDROID_LOG_ERROR, TAG, fmt, ##args)

/**
 *C函數,函數名為com_example_hellojni_JniNative.h中生成的函數名
 */
JNIEXPORT void JNICALL Java_com_example_hellojni_JniNative_testJni
  (JNIEnv *env, jobject thiz){
	//打印hello jni
	LOGE("hello jni");
}

命令行編譯JNI

進入項目的jni目錄,執行ndk-build,注意:如果沒配置環境變量是不能這麼使用的。編譯成功後,會生成3個libhellojni.so

\

\

 

運行項目,檢驗成果

\

 

\

\

 

總結

 

對於一些新接觸NDK編程的初學者來說,最好還是先從hello world做起。至少這樣能把整體的流程跑起來,知識是一點一點積累的。後續的章節將會更深入研究NDK,歡迎大家批評指正。

 

 

 

 

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