天天看點

android studio NDK開發環境搭建實踐

android studio現在已經很好的支援了NDK開發,使用android studio進行NDK的開發變得很友善。本文講的NDK開發時基于CMake編譯的NDK開發,有關ndk-build編譯的方法,我找時間會整理出來,因為我另一個項目就是用的ndk-build…..

在啟動NDK開發時,通常是這樣兩種情況:一、全新的android項目,需要支援NDK功能開發;已有的項目新增NDK功能開發。

一、

第一種情況,其實比較簡單。android studio在建立新項目時,直接選擇support c++就可以了,android studio會自動做好NDK開發環境的配置。

android studio NDK開發環境搭建實踐
android studio NDK開發環境搭建實踐

android studio 配置好了CMake檔案,gradle配置資訊等。這樣直接在對應的cpp檔案中進行jni代碼開發就可以了。

主要記錄一下第二種情況。多數情況下,我們會遇到在已有的項目中增加NDK功能,即編寫jni代碼,這個時候我們就需要在已有的項目中,增加NDK的編譯環境。主要步驟如下:

1. 編寫相應的類以及native方法:

public class RKECG {
    static {
        System.loadLibrary("rkecg");
    }

    public static native int getHR(short[] data);
}
           

2 . 使用Terminal,cd到java目錄,執行javah 包名.類名指令,生成對應的.h頭檔案:

android studio NDK開發環境搭建實踐
android studio NDK開發環境搭建實踐

注:生成的.h檔案在java根目錄中。

3 . 在main目錄下,建立cpp目錄,并建立一個*.cpp(檔案名任意)檔案,把第2步生成的.h檔案中的内容複制到該cpp檔案中(之前的.h檔案就可以删除了)

android studio NDK開發環境搭建實踐

4 . 在app目錄下添加并編寫CMakeLists.txt檔案,也可以直接從其他C++ support的android項目中複制個CMakeLists.txt檔案(我就是這麼幹的..-_-!),修改裡邊的内容就可以了:

android studio NDK開發環境搭建實踐

更多關于CMake檔案的參數說明,請各位看官自定度娘吧,很多這樣的資源。

5 . 配置app的build.gradle檔案

android studio NDK開發環境搭建實踐

6 . 最後,配置gradle.properties檔案:檔案中增加這樣一行代碼(其實是注釋掉的,去掉#注釋就可以了)

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-
           

sync一下就可以了~.

這樣就配置完成了。~ _ ~

等等等~~! 并不能運作,報錯了!

之前新增的native方法那裡報了上面這個錯誤! 其實這是android studio沒有更新對NDK的支援導緻的。按照如下的方法解決:

1 . 打開settings/plugins,搜尋ndk,取消ndk支援,然後重新開機android studio

android studio NDK開發環境搭建實踐

2 . 重新開機之後,就發現上面那個錯誤沒有了。但是我們是需要支援NDK的,怎麼能把這個取消呢,是以我們再重新把這個ndk支援勾打上,再重新開機一下android studio。 此時,上面那個錯誤就完美的木有了~~

然後我們就可以美麗的編寫jni代碼了,還有代碼提示有木有!~

android studio NDK開發環境搭建實踐

最後運作一下我們的app,測試一下jni代碼是不是便宜成功了:

android studio NDK開發環境搭建實踐

結果出來了,有木有!

最後如果你想看下你的.so檔案有沒有被打包到app中,可以打包app,檢視apk中的lib目錄看.so檔案:

android studio NDK開發環境搭建實踐

有了,完美!~

開始愉快的編寫jni代碼吧~~

繼續閱讀