【筆記】Android Studio中使用NDK-JNI

這些天一直在搞關於JNI的東西,重拾一下C++,翻一翻NDK的API。

NDK的使用第一反應是直接調用底層一些C/C++的東西,另一個衆所周知的功效就是高效,其實我覺得相比較Java部分而言,JNI也更加安全,從反編譯方面來看,Java部分的代碼也好,邏輯也好,即使做了混淆之類的一些防範性措施,想知道依然還是蠻容易的,這不是說使用了JNI就絕對安全了,我個人認爲至少比Java直接寫的安全些。

不用Eclipse已經很久了,越來越發現Android Studio的強大。

最簡單的NDK開發:1、下載安裝;2、開始使用

下載安裝


這裏主要需要下載安裝3個組件:

1 CMake能夠編譯C/C++,可以與Gradle一起構建原生庫;

2 NDK是Android原生開發工具包,它允許我們爲Android使用C/C++代碼,並且提供衆多平臺庫,例如一些傳感器等的使用管理;

3 LLDB是一個調試程序,讓Android Studio可以調試原生代碼(如果你強大到不需要調試就可以完成開發可以不安裝,當然這是不可能的啦);

開始使用

說是直接使用,其實也要分兩種,一種是直接創建支持C/C++的項目,一種是你已經創建了項目,後期加入C/C++部分;

1 直接創建(So Easy)

創建項目是勾上Include C++ support,然後就一路Next到底就行了。


上圖就是創建之後Android視圖下的目錄結構

1 native-lib.cpp就是我們編寫C/C++的地方

2 CMakeList.txt是CMake的構建命令

2 後期加入

首先需要有一個不支持C/C++的項目

然後根據直接加入的項目結構我們知道需要在項目中包含兩個東東,編寫C/C++的文件和包含CMake構建命令的文件。

2.1 創建編寫C/C++的文件

在需要創建編寫C/C++的項目模塊的main目錄右鍵創建C/C++的目錄:例如cpp;

然後在該目錄下創建文件C/C++ Source File:例如jni-lib.cpp

2.2 創建包含CMake構建腳本的文件

如果比較偷懶可以直接把直接支持C/C++項目中的CMakeList.txt複製過來改一下里面的一些配置



把這兩個命令中一些目標庫的名稱、相對路徑等替換成你自己的配置就行。

2.3 使項目支持C/C++

右鍵你需要支持C/C++的項目模塊點擊Link C++ Project with Gradle,

查看build.gradle可以發現就是在需要支持的項目模塊的gradle構建腳本中加入了CMake腳本執行配置

    externalNativeBuild {
        cmake {
            path 'CMakeLists.txt'
        }
    }

以上已經完成了使項目在後期加入C/C++代碼的方法。


小坑

Android Studio的智能是衆所周知的,我們只需要加載so庫,在Java中寫需要使用C/C++實現的方法名,一個Alt+Enter就能快捷創建C/C++中的方法。

但在這裏有一個小坑,就是你剛支持了C/C++,你的.c/.cpp文件中沒有任何方法,只有簡單的頭文件。

此時你使用上面的方法創建C/C++中的方法,Android Studio並不會在你自己創建的寫C/C++的文件中生成方法,而是會新的目錄中自動生成一個.c文件在裏面生成方法。


如果遇到上面發生的情況,其實很好解決,

一種是把生成的方法拷貝到你自己創建的文件中,再把Android Studio生成的文件和文件夾刪除,之後再用Alt+Enter生成的方法就在你創建的文件夾中了;

一種是先在自己創建的C/C++的文件中寫一個方法,再使用上面的快捷方法來創建想要實現的其他方法;




發佈了69 篇原創文章 · 獲贊 13 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章