Android第三方SDK學習筆記(二)

來源:互聯網
上載者:User

標籤:android   io   ar   java   sp   檔案   on   cti   bs   

今天來看jni的部分吧

主Activity裡static 的System.loadLibrary("String");

這句話是為了載入你所載入的庫,可能是檔案也可能是一個命名空間等。

public native functionName();這個是聲明你在jni裡需要調用的函數,只用做聲明不用去定義實現他。

一般就只是傳遞一些基本類型,複雜類型我也不知道該如何去做,這就夠了。

傳遞的大多是些整形的或者字元型的變數,這些就是買的遊戲裡的東西或者傳遞的一些簡單訊息。

因為java和c是不能直接互調的,所以還需要掌握jni裡的基本類型,這些也都簡單,差不多隻要在基本類型前加個"j"就ok了

例如int->jint double->jdouble boolean->jboolean

這些是基本的,也有jobject這是jni裡所有類的父類,和java的object類似吧

再看jni的檔案,java層裡調用的native方法,在jni的檔案裡都要把名字定義好,要不然產生so庫的就麻煩了

例如我的java的主類是在hbsi.dtd.game包下的MainActivity

那麼在你jni裡要實現的nativite方法就要寫成

JNIEXPORT void JNICALL Java_hbsi_dtd_test_MainActivity_FucntionName(JNIEnv *, jobject);

 

如果返回整形或者要傳遞參數要改成

JNIEXPORT jint JNICALL Java_hbsi_dtd_test_MainActivity_FucntionName(JNIEnv *, jobject,jint agr);

以此類推。第一個參數要把JNIEnv傳遞進去,JNIEnv是當前所線上程,通過調用 android::AndroidRuntime::registerNativeMethods()註冊native實現的函數指標。

一般在遊戲裡這些東西都由遊戲引擎封裝好了,對這些底層的封裝做個瞭解,能加個方法用用就夠了。  

要學習的還有很多。

 

Android第三方SDK學習筆記(二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.