1. 程式人生 > >Android中Java呼叫C/C++

Android中Java呼叫C/C++

①  Javah配置,Tool settings填寫的三項在不同平臺是相同的,無需改動。


②  安裝NDK ,下載安裝包並安裝。

③  在AS中配置NDK路徑

   

④  Make project,執行後再app/build/intermediates下會生成classes目錄,內為生成的class檔案。


⑤  先建立要引用C程式碼的類,這裡建立了一個MathKit類,並在類中寫:


⑥  用javah命令生成jni目錄,及對應的標頭檔案


上述命令在src/main/java中執行,執行結束後在main的同級目錄下會生成一個jni目錄,裡邊還有對應的.h標頭檔案。


⑦  修改app下的build.gradle檔案:


·其中moduleName是隨便寫的,與將來在Java類中使用System.loadLobrary(“本地庫名稱”);以及生成的.so檔名稱對應;

·ldLibs是要用到的jni庫,一般由google提供,比如上邊引入的log庫可以讓我們在C程式碼中使用LogCat日誌;

·abiFilters指的是我們要生成哪些平臺的so檔案,這裡生成arm平臺和x86平臺;

修改後,進行sync時,會報錯


解決辦法是,在gradle.properties中新增一行,如圖:


·這句的作用是允許我們使用已經過時的NDK版本,不知道AndroidStudio要求使用哪個版本的NDK才不會報錯,總之只要配置了這一句就可以使用比較舊的

NDK版本了。

接下來的工作是,編寫Native程式碼:

⑧  在jni目錄下新建一個.c或者.cpp檔案。


內部程式碼為:


此外還應新建一個空的.c檔案,否則會報錯,這應該是自身的bug.

然後執行build->rebuild project,生成.so檔案

 

⑨  執行app,完成。