標籤:基礎 參數 關於 示範 return 工程項目 gradle files news
在Android Studio上使用了一段時間的NDK,感覺官方的外掛程式com.android.tools.build.gradle-experimental還是不夠穩定,存在一定問題,不過Google也聲明了這個外掛程式是在實驗性階段。幸好官方在Android Studio上提供了另一種方式使用NDK,這篇部落格就講講這種到目前為止我覺得非常贊的方法。
開發環境
基礎的安卓開發環境:Android Studio、SDK、JDK
下載好NDK,自己手動下載或者用SDK工具下載都可以
我使用的版本:Android Studio 1.5.1
配置常用命令
NDK開發比較常用的命令就是產生標頭檔、構建so包,在android studio上我們可以先配置好命令,使用起來就很方便了,這是我感覺最贊的地方。
如所示,我添加了三個命令,按加號添加
NDK
其中一個命令的配置詳情如:
javah
命令配置參數:
javah用於產生標頭檔
Program:$JDKPath$/bin/javah
Parameters: -encoding UTF-8 -d ../jni -jni $FileClass$
注意:這個命令我加上了-encoding UTF-8指定編碼,你可以改成你工程的編碼。
Working directory: $SourcepathEntry$..\java
ndk-build用於構建so包
Program: 你的NDK目錄\build\ndk-build.cmd
注意:windows用ndk-build.cmd,MAC/Linux用ndk-build
Parameters: 什麼都不用填
Working directory:$ModuleFileDir$\src\main
ndk-build clean清除so包
Program: 你的NDK目錄\build\ndk-build.cmd
注意:windows用ndk-build.cmd,MAC/Linux用ndk-build
Parameters: clean
Working directory:$ModuleFileDir$\src\main
配置完三個命令之後,你就可以在右鍵菜單中找到這幾個命令,可以直接使用。如示範了產生NdkTest類的標頭檔
javah
配置工程
讓工程項目使用NDK,需要做一些配置工作
在local.properties檔案中填寫使用的NDK目錄:
1
ndk.dir=你的NDK目錄的絕對路徑
在gradle.properties檔案中添加如下代碼
1
android.useDeprecatedNdk = true
在module的build.gradle添加如下代碼:
android {
defaultConfig { ndk { moduleName "NdkTest"//定義NDKlibrary的名字 //ldLibs "log" 添加log庫,看自己需求 }}//這裡設定目錄,預設就這樣寫就可以了sourceSets { main { jni.srcDir "src/main/jni" jniLibs.srcDir "src/main/libs" }}
}
Hello word
按上面的步驟全都配置完之後就可以在Android Studio上享受NDK了。
下面寫一個簡單的返回Hello word字串的程式。
首先在java中聲明一個本地方法,並載入本地庫,如下:
public class NdkTest
{
static {
System.loadLibrary("NdkTest");
}
public static native String getString();
}
產生它的標頭檔(自動產生的名字是包名+類名me_majiajie_ndktest_NdkTest.h),並且建立c/c++檔案(NdkTest.cpp),如下:
#include "me_majiajie_ndktest_NdkTest.h"
JNIEXPORT jstring JNICALL Java_me_majiajie_ndktest_NdkTest_getString
(JNIEnv *env, jclass jc)
{
return env->NewStringUTF("Hello word !!!");
}
在jni目錄建立一個檔案命名為Android.mk,填入以下內容
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := NdkTest
LOCAL_SRC_FILES := NdkTest.cpp
include $(BUILD_SHARED_LIBRARY)
然後在jni目錄建立一個檔案命名為Application.mk,填入以下內容
APP_MODULES := NdkTest
APP_ABI := all
注意:Android.mk和Application.mk都是NDK預設的設定檔,關於這兩個檔案的詳細介紹可以看官網。
最後產生so包就可以了,記住每次修改C檔案都需要重建so包:
如何優雅地使用安卓NDK