版權聲明:本文爲博主原創文章,遵循 CC 4.0 by-sa 版權協議,轉載請附上原文出處連接和本聲明。
本文連接:https://blog.csdn.net/u013171283/article/details/79240514
ndk編程(native developer kit),關於jni(java native interface)這方面的使用,其實早在2014年的時候,就研究過這方面的知識,只是當時工做上用不到因此就沒對這方面進行一個彙總! 近期因爲我的維護Android平臺中間件要涉及到這方面的知識,那麼今天將結合我的工做對這部分知識體系進行一個總結,我的工做上的有關jni編寫是基於Linux系統平臺下的,這個比在Windows下進行NDK開發更加方便簡捷。java
環境搭建
首先再搭建Windows下的NDK開發環境時,先回顧一些重要的知識點:linux
NDK開發, 簡單點理解 , 其實就是用咱們的C/C++編寫一個本地庫函數供java調用或者回調java端的接口,去作一個java端沒法作的事! 實現跨一個平臺操做android
咱們的java,或者C/C++,由寫代碼到可運行的軟件或者函數庫時須要通過兩個步驟:
1 編譯階段
2 鏈接階段c++
Java文件編譯階段以後生成 .class文件 ,鏈接階段的工做交由java的虛擬機處理完成
若是虛擬機是在Windows下,則會去模擬一個Windows環境去解析完成java編譯階段以後的字節碼.class文件
若是虛擬機是在Linux下,則會去模擬一個Linux環境去解析完成java編譯階段以後的字節碼文件shell
C代碼跟java代碼有所差別,在C文件編譯階段以後生成 .0中間文件,在Windows下鏈接生成.exe文件,linux下生成.elf文件編程
.exe是windows下可執行文件
.elf是linux下可執行文件windows
windows下C語言打包成的函數庫.dll
linux下C語言打包成的函數庫.so動態庫或者靜態庫.a .ko等多種方式eclipse
衆所周知,咱們咱們Android底層用的操做系統就是Linux操做系統,其實Linux就是C,那麼因爲廠商不一樣,那麼定製方式就會不一樣,對應的一些C代碼仍是有區別的,手機底層Linux操做系統有些是基於arm處理器cpu(這個目前是主流cpu) ,有些就會是基於x86處理器cpu(例如聯想手)可是這類處理器兼容性差有些軟件可能會跑不起來svn
那麼問題來了!咱們須要在windows下的環境 把咱們的c代碼打包成 手機能用的函數庫 .so 而不是.dll 該怎麼辦?那麼咱們能夠在Windows下去模擬一個Linux環境出來,這邊須要用到幾個輔助工具:函數
android-ndk-r8c點擊下載
工具點擊下載
一、NDK (去Google官網下載最新的NDK) 解壓到系統某個盤符下,可是路徑不要有中文 (咱們要在Windows下進行NDK開發就必需要有本身配置的ndk環境)
下載下來是上面這個樣子,我的這邊目前用的是r8這個版本,目錄介紹:
build—編譯目錄(裏面存放不少Linux下的.sh批處理文件,.sh是linux下的批處理文件,也稱shell腳本,若是對這方面還不是熟悉的同窗請移步至 Linux shell 腳本編寫 做個簡單的理解,.bat是windows下的批處理文件。因爲ndk有不少linux的批處理文件,因此最先的NDK開發是基於linux平臺系統下開發的(國外Windows系統收費,在中國特殊國情)國外多數NDK開發是基於這個Linux下開發 )
samples—案例demo
docs—開發文檔參考
test—測試目錄
platforms—平臺 通常基於8版本開發 這個版本是比較穩定的版本
ndk環境變量配置(須要配置兩處),如下是博主我的的環境變量配置:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;E:\eclipse_adt_bundlece\sdk\platform-tools;F:\Git\Git\cmd;F:\svn\bin;F:\QuickTime Alternative\QTSystem;D:\Program Files (x86)\Java\jdk1.7.0_79\bin;C:\MinGW\bin;E:\android-ndk-r8c
NDK_HOME
E:\android-ndk-r8c
在命令行輸入ndk-build彈出下面的信息說明配置無誤:
二、 cygdriver 模擬linux系統環境
因爲在Windows下進行ndk開發,執行ndk指令以及打包出來的函數庫會出現一些問題,因此咱們還須要另一個工具去模擬Linux環境,下面說一下這個工具的安裝使用:
還有一點要注意的是:安裝時咱們只須要添加如下兩項包數據爲install就能夠了
devel install 和 shell install
安裝成功以後,會在桌面上出現這麼一個圖標;
linux會把全部設備都生成了一個文件,咱們在這個工具中cd到根目錄看看這個模擬Linux環境的文件目錄跟咱們手機上的差別:
從上來面來看,模擬的跟真實手機上的多少來講有一點差別,手機上的Linux文件目錄結構要比模擬的要多那麼些文件,另外這個模擬的Linux環境文件結構跟這個工具安裝時關聯的本地文件裏的文件結構是同樣的。
三、cdt(c/c++ developer tools)
爲了方便在eclipse或者其它開發工具中開發c/c++代碼, 讓c/c++代碼高亮顯示我要用到這個cdt插件,若是你的C/C++用得至關得純熟,這個工具是多餘的!這邊以安裝到eclipse爲例:
打開eclipse的頂部菜單欄help->install new software執行如下操做便可:
Eclipse添加CDT C/C++開發插件 Windows下爲 Eclipse 配置 C/C++ 編譯環境 Eclipse CDT配置 ———————————————— 版權聲明:本文爲CSDN博主「啊sir_」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處連接及本聲明。 原文連接:https://blog.csdn.net/u013171283/article/details/79240514