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

        轉載請註明出處:http://blog.csdn.net/allen315410/article/details/42490109

        本專欄的前面幾篇博客寫了一些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程序時就應該採取這樣簡便的方式了,這篇博客介紹到此爲止了,希望看過博客的朋友提出修正意見,謝謝!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章