Android NDK開發(七)——現代化開發方式

來源:互聯網
上載者:User

標籤:android ndk   交叉編譯   cygwin   jni   cdt   

        本專欄的前面幾篇部落格寫了一些Android下通過JNI進行NDK開發的基礎知識,主要步驟在裡面也寫的很清晰,但是看起來比較麻煩,為什麼呢?可能細心的朋友會發現我每次在進行交叉編譯的時候,是通過cygwin類比Linux環境用ndk-build命令進行編譯的,而且每次建立JNI工程的時候,都會在工程目錄下手動的建立一個jni的目錄,在該目錄下建立C源碼檔案和Android.mk設定檔,這一系列的操作顯得特別繁瑣,尤其是cygwin,首先其下載安裝是個非常耗時耗力的操作,其次使用cygwin還需要理解Linux的一些命令。


1,ndk-build.cmd環境配置

        除了這些繁瑣之外,還有其它一些“不方便”的地方,下面會說到,首先說明的一點是,本人在以前學習NDK開發的時候,是基於ndk_r7的版本的,那會開發NDK可能必須得在Linux環境下完成交叉編譯,但是在ndk_r8版本以後,Google也意識到很多Android程式員是在Windows環境下進行開發的,所以在r8版本之後,ndk開發包中開始提供了基於Windows開發的一些設定檔和DOS命令列的批次檔,下面就是最新版本android-ndk-r10d的解壓目錄部分:


         紅色框框圈中的ndk-build.cmd就是r8版本以後給我們Windows開發人員提供的在DOS命令列下開發的NDK的一些批處理命令,有了這個後,我們在NDK開發的時候,就不必再安裝煩人的cygwin了,也不用在cygwin下進行交叉編譯了,而是可以直接在Windows命令列下進行編譯.so檔案,使用ndk_build.cmd需要配置windows環境變數,將ndk_build.cmd配置在Path變數中,此過程類似於配置JDK,具體步驟不再詳述。

案頭上右鍵點擊“電腦” --> 屬性 --> 進階系統設定 --> 環境變數 --> 選擇Path點擊編輯 --> 將ndk解壓路徑複製粘貼到變數值後面


         開啟Windows命令列,輸入ndk-build,斷行符號,若出現如所示就說明環境配置好了,可以使用ndk-build命令在Windows下進行開發了。



2,Eclipse環境配置

        做完Windows的配置之後,我們最好還是需要配置一下Eclipse下的NDK路徑,這樣我們編譯.so檔案的時候甚至都不用Windows命令列了,直接在Eclipse下進行編譯。

在eclipse --> window --> perference --> Android --> NDK標籤中指定NDK所在的目錄(只需要執行一次)



3,使用Android Tools->Add Native Support

       做到這一步,我們先來建立一個Android工程,為這Android工程自動的添加JNI支援。

工程上右鍵 --> Android Tools --> Add Native Support,在彈出的對話方塊中輸入編輯的C/C++的檔案名稱,確定之後,可以看到工程下自動建立了一個jni和obj目錄,並且jni目錄下自動產生了一個.cpp的C++檔案,我們需要改成.c的檔案,還有一個Android.mk被自動產生了,我們也需要改LOCAL_SRC_FILES為.c的C檔案。



4,關聯源碼

      在前面的幾篇部落格中,只要在Eclipse中開啟C檔案的源碼時,會發現很多黃色的小線條,弄的人比較惱火,而且C檔案的類庫源碼是沒有關聯的,我們按下Ctrl鍵用滑鼠點擊源碼的時候並沒有出現源碼,那麼在高版本的ndk發布後,這些操作只是簡單的在Eclipse下設定就好了。

工程點擊右鍵 --> properties --> C/C++ General --> Paths and Symbols右側點擊add按鈕 --> 點擊File System --> 選擇android-ndk-r9b\platforms\android-19\arch-arm\usr\include,一直到include目錄為止 --> ok


開啟C源碼查看一下,發現惱人的黃線沒有了,然後在方法或者標頭檔處Ctrl+右擊,源碼也彈出來了,方便多了。


5,編寫Java的Native方法,編寫C實現源碼

      做到這步都是要實現我們需要的功能了,具體步驟跟以前介紹的都差不多,這裡不再詳述了,有興趣瞭解的話,請查看我們前面的部落格Android NDk開發——從Hello World學起,本次編寫的代碼跟上篇部落格的代碼是一模一樣的,沒必須再重新寫一遍了。需要注意的是,經過上述的配置,這次編寫C代碼的時候就有了代碼提示了,哈哈,是不是一下子變得進階多了啊?



6,編譯動態連結程式庫

      通過上述步驟,我們的代碼已經寫好了,這時候是需要將編寫好的代碼進行交叉編譯成.so檔案的,該怎麼做呢?回想以前的做法,開啟cygwin,輸入Linux命令切換到工程目錄下,輸入ndk-build進行編譯?還是開啟cmd命令下視窗,切換到工程目錄下,輸出ndk-build?以上通通都不用,為什麼呢?因為我們剛剛在properties裡設定好了NDK編譯環境,所以這次我們可以直接在Eclipse上完成交叉編譯的工作。

Eclipse右上方找到Open Perspective --> 選擇C/C++視圖 -->在視圖的右上方點擊“小鎚子”按鈕,即可在Eclipse下交叉編譯了。



編譯後



在工程下發現


好了,做到這一步就說明我們已經成功完成了Native代碼的交叉編譯工作了,剩下的就是編寫Java代碼去調用了。


     怎麼樣,以上的NDK開發步驟是不是比前面幾篇部落格裡介紹的手動開發步驟要簡單的多啊?!而且還省略了cygwin的下載和安裝以及使用,最後代碼中的小黃線沒有了,編寫C代碼也有了代碼提示,還可以關聯源碼,簡直方便到了極點!那麼以後我們在開發JNI程式時就應該採取這樣簡便的方式了,這篇部落格介紹到此為止了,希望看過部落格的朋友提出修正意見,謝謝!


Android NDK開發(七)——現代化開發方式

聯繫我們

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