Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> [Android] 環境配置之Android Studio開發NDK

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

編輯:關於Android編程

 

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

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

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

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

准備工作

Android Studio 環境搭建

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

NDK 環境搭建

 

下載:http://developer.android.com/tools/sdk/ndk/index.htmlWindows32:android-ndk-r10d-windows-x86.exeWindows64:android-ndk-r10d-windows-x86_64.exeMac OS X 32-bit:android-ndk-r10d-darwin-x86.binMac OS X 64-bit:android-ndk-r10d-darwin-x86_64.binLinux 32-bit (x86):android-ndk-r10d-linux-x86.binLinux 64-bit (x86):android-ndk-r10d-linux-x86_64.bin

 

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

建立一個項目 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 

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 

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 
        }

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

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved