編輯:關於Android編程
android的知識太過龐雜了,自己如果學過了,但過一段時間不用了又會忘記。寫android NDK系列的博客呢,其一是為了鍛煉自己的寫作水平,其二是為自己所學過所掌握的一些知識做一下梳理、記錄,方便以後自己查閱。廢話不多說,先寫個hello world開始吧。
JDK安裝和配置路徑就不用說吧,為了能在命令行中使用ndk指令,需配置下系統環境,在系統變量path中添加ndk r10e的路徑。我的是安裝在:;D:\soft\android-ndk-r10e
在命令行,進入到--<項目路徑>/bin/classes,執行如下指令:
javah-classpath . com.example.hellojni.JniNative
執行成功後,將在當前目錄下生成com_example_hellojni_JniNative.h的頭文件
將生成的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目錄,執行ndk-build,注意:如果沒配置環境變量是不能這麼使用的。編譯成功後,會生成3個libhellojni.so
對於一些新接觸NDK編程的初學者來說,最好還是先從hello world做起。至少這樣能把整體的流程跑起來,知識是一點一點積累的。後續的章節將會更深入研究NDK,歡迎大家批評指正。
概述之前在討論組裡聽到許多討論okhttp的話題,可見okhttp是一個相對成熟的解決方案,看到android4.4後網絡訪問的源碼中HttpURLConnection已
小米手機如何快速截屏:在這裡總結了兩種小米手機快速截屏的方法,不知道或者要用的童鞋還不快點收藏起來試試看!1、下拉通知欄,點擊截屏,2秒後直接進入截屏截取當
View的滑動沖突指的是當有內外兩層View同時可以滑動的時候,這個時候就會產生滑動沖突。那麼應該如何解決滑動呢,其實要用到View的事件分發機制。View的滑動沖突主要
這篇文章主要介紹發送驗證碼和校驗驗證碼的功能,用到一個第三方平台Bmob,那Bmob是什麼呢?Bmob可以開發一個雲存儲的移動應用軟件,他提供了大量的標准的A