說到NDK,那就要先說說cygwin。
cygwin:是一個相當於Android虛擬機一樣的東西,它是Linux系統的虛擬機,作用是編譯成爲so文件,具體的等會詳細說。
NDK:它可以讓我們在開發環境中使用本地語言來開發應用,比如說c、c++;
接下來我們說說這些內容的關係和使用:
首先說關係:使用NDK9之前版本編寫c代碼時,需要藉助cygwin工具完成編譯so的過程。NDK相當於編寫Android應用的SDK,屬於第三方庫文件。而如果使用NDK9,或者以後的版本,由於對Android的版本要求比較高,所以還沒有應用廣泛。
再來是使用:最重要的是使用NDK,那麼如何使用呢?我們首先安裝cygwin,在虛擬機中配置NDK的路徑。(.bash_profile文件,在cygwin的home目錄中。)
雙擊運行cygwin,
輸入命令:$ cd $NDK
如果顯示NDK的路徑就說明配置成功了。
編寫c代碼,在cygwin中有默認的代碼模板,我們可以修改它作爲我們需要生成so文件的c代碼
之後我們在cygwin中輸入
$ $NDK/ndk-build
就可以生成so文件了。找到文件後將文件考入我們的項目中(libs/armeabi)沒有則創建。
爲什麼要用NDK:
從好處來講,我們的關鍵代碼比如加密等需要使用c來編寫,因爲它可以很好的防止反編譯程序。c的代碼運行速度快。
我們爲什麼要使用NDK生成so文件呢?
在Windows系統中,使用編譯工具編寫的c代碼編譯後生成dll文件,Linux系統中編寫c代碼後生成so文件。而dll是不可以在Linux系統中運行的,所以我們就需要一個cygwin虛擬機模擬Linux系統,從而幫助我們生成so文件的操作。我們知道,Android應用時運行在Linux中,所以我們的c代碼只有生成so文件纔可以讓應用運行在Linux平臺上。