Android Studio最新CMake使用教程(一):創建和了解Native工程

        Android Studio目前的最新版本(3.4)在使用cmake編寫Jni代碼時,與之前舊版本的Android Studio有些許不同,這裏記錄下來,供大家參考。

        舊版本AS裏cmake的使用這裏就不再贅述,下面單講最新版AS(3.4)創建cmake的步驟。

        首先我們新建一個Android工程,File\rightarrowNew\rightarrowNew Project,注意,在創建新工程時,我們要選擇創建一個“Native C++”工程,如圖:

        這裏是與舊版本AS不同的地方,這種方法創建出來的就是一個可以直接使用Jni的工程(當然你也可以選擇創建一個Basic或者Empty工程,創建完之後手動創建和設置CMakeLists文件)  。接下來設置你的工程名,包名,路徑等:

 其中最小API級別(也就是你的工程支持的最低API版本,打包成的App只能運行在API比此版本高的Android手機上)可以在這裏設置,也可以創建完在gradle裏修改。下面的步驟默認就好。

        創建完成後,我們把工程目錄切換到Project下:

看到的目錄結構應該是下面這樣:

可以看到cpp文件夾下出現了我們所期望的CMakeLists.text 文件和一個.cpp文件,並且編寫好了一個Jni例子。直接打包運行App,可以看到運行結果是在手機上輸出了:

Hello from C++

如果你是第一次使用Jni,那麼恭喜你成功地運行了你人生中的第一個使用Jni的Android Native工程。

下面我們簡單分析下這個Native工程。

首先我們來看下CMakeLists.text文件:

特別的要生成的動態庫的源碼文件在本工程裏就是native-lib.cpp。這裏我們的源碼文件與庫名相同了,實際二者不必要相同,可以任意設置,但一般與我們要實現的功能相關 。

接下來我們看下MainActivity:

可以看到MainActivity裏首先加載了我們在CMakeLists裏定義的動態庫 ,然後聲明瞭一個native的方法stringFromJNI(),這個方法在onCreate裏被調用。正是這個方法實現了Java代碼調用C++/C代碼。

打開native-lib.cpp,在這個源文件裏,定義了一個與MainActivity裏native方法對應的Jni方法:

 Jni裏返回值類型與對應的java端接收的類型要一致,一般是基礎數據類型前面加上j,具體可以問度娘(或者參考這篇博客https://blog.csdn.net/aitumingmumu/article/details/72802949,感謝博主分享!)。

重點在於Jni方法名的定義。Jni的方法名一般分爲四個部分,如圖,

第一部分是Java標識,意思是該方法對應於java端的方法;

第二部分是java端對應的方法所在的包名(點.換成下滑線_);

第三部分是java端對應的方法所在的類名;

第四部分是Java端對應的方法的方法名;

所以也可以理解成Jni方法名是由java端對應方法的相對路徑構成(main路徑下) 。

        好了,到這裏就把一個最簡單的Android Native 工程介紹完了。接下來的博客我會具體講下在此基礎上的動態鏈接庫(共享庫).so文件的生成和使用。

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