[Android] 環境配置之Android Studio開發NDK

========================================================
作者:qiujuer
博客:blog.csdn.net/qiujuer
網站:www.qiujuer.net
開源庫:Genius-Android
轉載請註明出處:http://blog.csdn.net/qiujuer/article/details/42040963
========================================================

NDK 開發哪家強?XX XX 找 Blue Fly.

說到 NDK 開發,其實是爲了有些時候爲了項目需求需要調用底層的一些 C/C++ 的一些東西;另外就是爲了效率更加高些。

但是很多時候能不用就不用;這個是啥原因?個人感覺有些時候是覺得麻煩,首先要配置 NDK 還要 下載 Cygwin ,配置 Cygwin ,然後需要編譯生成,哎太麻煩了。如果你說使用 Eclipse,的確這樣在編譯上是能簡單很多,但是前期也是需要配置一大堆;哎,配置錯了還傷不起。

現在谷歌主力推動 Android Studio 這個是個不錯的工具,至少現在來看在 Eclipse 上能做到的 這邊都有,這邊有的Eclipse上不一定有。

下面來說說 在 Android Studio 中怎麼進行 NDK 的開發。

準備工作

Android Studio 環境搭建

在我的上一篇文章 [Android] 環境配置之正式版Android Studio 1.0 中有介紹了。

NDK 環境搭建

都是可執行文件,下載後點擊即可解壓到當前文件夾;當然你可以使用命令行來進行跨文件夾解壓的。

建立一個項目 NDKDemo:


建立對應的類,在 MathKit 中我們實現計算 INT 值的平方數。

public class MathKit {
    public static native int square(int num);

    static {
        System.loadLibrary("JniDemo");
    }
}
StringKit 這個就是充數用的:

public class StringKit {
    public static native void setNull(String str);
    static {
        System.loadLibrary("JniDemo");
    }
}

準備 .h 文件

進入Java目錄;CMD 進入該目錄進行 javah 操作:


這個想必大家並不陌生吧,該文件就是 java 類對應的 頭文件,當然如果你比較厲害的話可以不用這樣生成,自己敲代碼完成也行;反正我是不行。

如下,建立文件夾:


拷貝之前的文件進去:


分別實現:

net_qiujuer_ndkdemo_jni_MathKit.cpp

#include <net_qiujuer_ndkdemo_jni_MathKit.h>

JNIEXPORT jint JNICALL Java_net_qiujuer_ndkdemo_jni_MathKit_square
  (JNIEnv *env, jclass cls, jint num)
  {
        return num*num;
  }
net_qiujuer_ndkdemo_jni_StringKit.cpp

#include <net_qiujuer_ndkdemo_jni_StringKit.h>

JNIEXPORT void JNICALL Java_net_qiujuer_ndkdemo_jni_StringKit_setNull
  (JNIEnv *env, jclass obj, jstring str)
  {

  }

設置項目

設置根目錄中的:local.properties


該設置不是必須,如果你設置了環境變量則可不用設置;如果沒有但是又沒有設置將會出現:


設置 APP 項目 build.gradle


該設置是爲了設置生成的Jni名稱爲:JniDemo

主文件調用:


現在點擊運行:


可以看見是非常簡單的;這個調用可以說是我操作過最簡單的了;甚至於生成 .H 文件都可以編輯 .sh 文件來進行批處理(這個後面有時間再說).


更多

在平時的那些操作中我們不可避免的要建立:

Android.mk

LOCAL_PATH		:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := genius
LOCAL_SRC_FILES := net_qiujuer_imageblurring_jni_ImageBlur.cpp
LOCAL_LDLIBS    := -lm -llog -ljnigraphics

include $(BUILD_SHARED_LIBRARY)
Application.mk

APP_ABI		:= all
APP_PLATFORM:= android-19
APP_OPTIM	:= release
而這裏這兩個文件都沒有建立,那麼是怎麼決定的呢?

我們可以在 ndk 的 modelName 上按住 Ctrl 進行點擊將會出現這個界面:



這些就是全部能夠設置的參數。分別對應:

        ndk{
            moduleName "JniDemo" // 設置生成的文件名
            cFlags "-DANDROID_NDK -D_RELEASE" //這個對應的是生成模式
            ldLibs "m", "log", "jnigraphics" //這個對應 LOCAL_LDLIBS 但是需要去掉前面的 “l”
            abiFilters "all" //這個是對應的 APP_ABI
            stl "stlport_shared" //這個對應的是 APP_STL 
        }

好了,就這些祝大家成功。項目打包上傳。

本次項目點擊這裏下載。

========================================================
作者:qiujuer
博客:blog.csdn.net/qiujuer
網站:www.qiujuer.net
開源庫:Genius-Android
轉載請註明出處:http://blog.csdn.net/qiujuer/article/details/42040963
========================================================

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