編輯:關於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,歡迎大家批評指正。
Android 掃描條形碼(Zxing插件),androidzxing使用Android Studio 一、在build.gradle(Module:app)添加代碼 &
Android 扒開美女衣服,android扒開美女本文主要實現一個小的扒開美女衣服的游戲項目 效果如下: 項目布局設計: <FrameLayout xmlns
Android 手把手帶你玩轉自定義相機 概述 相機幾乎是每個APP都要用到的功能,萬一老板讓你定制相機方不方?反正我是有點方。關於相機的兩天奮斗總結免費送給你。 啟
Android黑科技,讀取用戶短信+修改系統短信數據庫, 安卓系統比起ios系統最大的缺點,相信大家都知道,就是系統安全問題。這篇博客就秀一波&ldquo