1. 程式人生 > >深入瞭解android平臺的jni---使用巨集定義精簡JNI介面函式名稱

深入瞭解android平臺的jni---使用巨集定義精簡JNI介面函式名稱

深入瞭解android平臺的jni—使用巨集定義精簡JNI介面函式名稱 (2014-07-01 18:33:01)轉載▼
標籤: android jni 巨集定義 分類: android
精簡JNI介面函式名稱
生成java的本地方法一般是通過如下步驟完成:
1.編寫帶有native方法的Java類
2.使用javah命令生成.h標頭檔案;
3.編寫程式碼實現標頭檔案中的方法
javah命令生成的jni函式,JNI介面函式命名如下:
Java_包名類名方法名
jni介面函式是以_符號進行分割
這麼長的函式名稱將是比較麻煩的事情,這裡使用巨集定義的方法,簡單實現jni函式命名
//定義包名+類名

include

define CLASS com_ckl_jniname_JninameActivity

巨集NAME(FUNC)的定義,一定按照下面的方法定義,才能合成出正確的函式名稱

define JNI_METHOD3(CLASS3, FUNC3) Java_##CLASS3##_##FUNC3

define JNI_METHOD2(CLASS2, FUNC2) JNI_METHOD3(CLASS2, FUNC2)

define JNI_METHOD(FUNC) JNI_METHOD2(CLASS, FUNC)

jstring JNI_METHOD(test)(JNIEnv* env, jobject thiz)
{
return (*env)->NewStringUTF(env, “hello world !”);
}
//test是java應用的本地方法名

相關推薦

深入瞭解android平臺jni---使用巨集定義精簡JNI介面函式名稱

深入瞭解android平臺的jni—使用巨集定義精簡JNI介面函式名稱 (2014-07-01 18:33:01)轉載▼ 標籤: android jni 巨集定義 分類: android 精簡JNI介面函式名稱 生成java的本地方法一般是通過如下步驟完成

深入瞭解android平臺jni(二)

Android.mk是Android提供的一種makefile檔案,用來指定諸如編譯生成so庫名、引用的標頭檔案目錄、需要編譯的.c/.cpp檔案和.a靜態庫檔案等。要掌握jni,就必須熟練掌握Android.mk的語法規範。 一、Android.mk檔案的用途一個andr

Android.mk檔案語法規範——深入瞭解android平臺jni

Android.mk是Android提供的一種makefile檔案,用來指定諸如編譯生成so庫名、引用的標頭檔案目錄、需要編譯的.c/.cpp檔案和.a靜態庫檔案等。要掌握jni,就必須熟練掌握Android.mk的語法規範。 一、Android.mk檔案的用途一個andr

深入瞭解android平臺jni

Android.mk是Android提供的一種makefile檔案,用來指定諸如編譯生成so庫名、引用的標頭檔案目錄、需要編譯的.c/.cpp檔案和.a靜態庫檔案等。要掌握jni,就必須熟練掌握Android.mk的語法規範。 一、Android.mk檔案的用途一個a

瞭解android平臺jni(一)

android中很多Java類都具有native介面,這些介面由本地實現,然後註冊到系統中,主要的JNI程式碼放在以下的路徑中:frameworks/base/core/jni/,這個路徑中的內容被編譯成庫 libandroid_runtime.so,被放置在目標系統的/s

深入瞭解Android藍芽Bluetooth——《基礎篇》

什麼是藍芽?   也可以說是藍芽技術。所謂藍芽(Bluetooth)技術,實際上是一種短距離無線電技術,是由愛立信公司公司發明的。利用“藍芽”技術,能夠有效地簡化掌上電腦、膝上型電腦和行動電話手機等行動通訊終端裝置之間的通訊,也能夠成功地簡化以上這些裝置與因特網

Android 深入理解Android中的自定義屬性

1、引言 對於自定義屬性,大家肯定都不陌生,遵循以下幾步,就可以實現: 自定義一個CustomView(extends View )類 編寫values/attrs.xml,在其中編寫styleable和item等標籤元素 在佈局檔案中CustomView使用自定義的屬性(

帶你深入理解Android中的自定義屬性!!!

att omv world 過程 參數 and pla 開發 dimen 引言 對於自定義屬性,大家肯定都不陌生,遵循以下幾步,就可以實現: 1.自定義一個CustomView(extends View )類 2.編寫values/attrs.xml,在其中編寫styl

C語言中的一些巨集定義和常用的函式

文章目錄 一、typeof 關鍵字 二、snprintf()函式的作用 三、__builtin_expect的作用 四、C語言中常用的預定義 五、反斜槓的作用 一、typeof 關鍵字   如果

Android定義View的實現方法,帶你一步步深入瞭解View(四)

不知不覺中,帶你一步步深入瞭解View系列的文章已經寫到第四篇了,回顧一下,我們一共學習了LayoutInflater的原理分析、檢視的繪製流程、檢視的狀態及重繪等知識,算是把View中很多重要的知識點都涉及到了。如果你還沒有看過我前面的幾篇文章,建議先去閱讀一下,多瞭解一些

Android定義View的實現方法 帶你一步步深入瞭解View 四

                不知不覺中,帶你一步步深入瞭解View系列的文章已經寫到第四篇了,回顧一下,我們一共學習了LayoutInflater的原理分析、檢視的繪製流程、檢視的狀態及重繪等知識,算是把View中很多重要的知識點都涉及到了。如果你還沒有看過我前面的幾篇文章,建議先去閱讀一下,多瞭解一些原

Android LayoutInflater原理分析,帶你一步步深入瞭解View

有段時間沒寫部落格了,感覺都有些生疏了呢。最近繁忙的工作終於告一段落,又有時間寫文章了,接下來還會繼續堅持每一週篇的節奏。 有不少朋友跟我反應,都希望我可以寫一篇關於View的文章,講一講View的工作原理以及自定義View的方法。沒錯,承諾過的文章我是一定要兌現的,而且在View這個話題上我還

Android studio 使用自定義mk檔案編譯jni專案

最近將公司ndk專案從eclipse遷移到as,為了方便省事,直接使用原有mk檔案。參考網路資料,順利完成遷移工作。現貼出使用自定義mk檔案的關鍵程式碼,mark以備後面使用。 buildTypes { release { minifyEna

Android 四大元件之——Acitivity(三) 深入瞭解Activity的啟動流程

上圖為整個Activity的啟動流程 接下來我們大概分析  在我們的Android系統中,應用程式是由Launcher這個應用啟動起來的。當我們安裝好應用程式之後,就會在Launcher的介面上生成一個圖示,我們點選圖示時Launch就會啟動我們的應用程式。 1.點選

Android.mk中新增巨集定義

在Boardconfig.mk 中新增一個 IMAGE_FOR_FACTORY_TEST:= true 由於Boardconfig.mk和各目錄的Android.mk是相互關聯的 所以我們可以在Android.mk 中新增 一個 ifdef IMAGE_FOR_FACTO

Unity各平臺內建巨集定義

屬性 方法 UNITY_EDITOR #define directive for calling Unity Editor scripts from your game code. UNITY_EDITOR_WIN #

Android framework層自定義jni

framework新增自定jni    本文章適用於在原始碼環境下在framework新增自定的jni供上層Apk呼叫。 1 framework新增自定jni 新增自定義的jni檔案和Androidmk 新增系統編譯配置 新增自定義的jni檔案和Android.mk 首先在f

Android檢視繪製流程完全解析,帶你一步步深入瞭解View(二)

在上一篇文章中,我帶著大家一起剖析了一下LayoutInflater的工作原理,可以算是對View進行深入瞭解的第一步吧。那麼本篇文章中,我們將繼續對View進行深入探究,看一看它的繪製流程到底是什麼樣的。如果你還沒有看過我的上一篇文章,可以先去閱讀 Android Layo

【vue大師晉級之路第二集:深入瞭解元件】第3章——自定義事件

事件名 不同於元件和 prop,事件名不存在任何自動化的大小寫轉換。而是觸發的事件名需要完全匹配監聽這個事件所用的名稱。舉個例子,如果觸發一個 camelCase 名字的事件: this.$emit('myEvent') 則監聽這個名字的 kebab-case

Android LayoutInflater原理分析,帶你一步步深入瞭解View(一)

有段時間沒寫部落格了,感覺都有些生疏了呢。最近繁忙的工作終於告一段落,又有時間寫文章了,接下來還會繼續堅持每一週篇的節奏。有不少朋友跟我反應,都希望我可以寫一篇關於View的文章,講一講View的工作原理以及自定義View的方法。沒錯,承諾過的文章我是一定要兌現的,而且在Vi