Android 與 C++ 之間糾纏

來源:互聯網
上載者:User

標籤:android   blog   http   java   使用   檔案   

1)遊戲開發中,引擎層多用C++來實現,但是有時候為了整合SDK,調用Android原生的時候,難免要思考——C++層如何去調用Java層?

2)Android層調用C++庫去完成一些功能也使常見的。開發中難免會思考怎麼去用Java調用C++的問題。

最近的項目需求是Java調用C++的代碼,來完成一些功能。

案例1.C++如何調用Java層。

在網上粗略的瞭解了一下。

JniMethodInfo、JniHelper的C++類來實現,通過匯入相關標頭檔,引入到項目中。

調用的時候需要注意C++參數的傳遞,方法簽名,以及Java返回的值的接收。

參考:http://www.himigame.com/android-game/725.html

略過~

 

案例2.Java層調用C++的代碼。

Java調用C++的代碼是通過調用.so包(C++檔案編譯後的檔案)來實現的。.so包的產生是通過Android-ndk庫的支援。

在建立的android項目中,首先需要建立jni檔案夾。NDK編譯需要jni/android.mk檔案,jni/application.mk檔案。

android.mk檔案用來想ndk說明需要編譯的c檔案有哪些,application.mk檔案用來說明需要編譯的abi,也就是CPU的類型。

可以參考android/ndk下的samples/hello-jni項目。

調用自己的c++檔案,首先建立自己的C++檔案,然後添加到android.mk檔案中,

向ndk表示,我這個自訂的C++檔案也將參加到程式編譯中去、並供Java來調用使用。

上張圖片說說:

cocos2dx遊戲也是通過這樣的方法,在android手機端完成了運行。

例如:android程式啟動,從一個Activity進入後,匯入靜態庫,然後就開始調用跑C++的遊戲引擎庫來跑遊戲了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.