編輯:關於Android編程
說到 NDK 開發,其實是為了有些時候為了項目需求需要調用底層的一些 C/C++ 的一些東西;另外就是為了效率更加高些。
但是很多時候能不用就不用;這個是啥原因?個人感覺有些時候是覺得麻煩,首先要配置 NDK 還要 下載 Cygwin ,配置 Cygwin ,然後需要編譯生成,哎太麻煩了。如果你說使用 Eclipse,的確這樣在編譯上是能簡單很多,但是前期也是需要配置一大堆;哎,配置錯了還傷不起。
現在谷歌主力推動 Android Studio 這個是個不錯的工具,至少現在來看在 Eclipse 上能做到的 這邊都有,這邊有的Eclipse上不一定有。
下面來說說 在 Android Studio 中怎麼進行 NDK 的開發。
在我的上一篇文章 [Android] 環境配置之正式版Android Studio 1.0 中有介紹了。
下載: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
都是可執行文件,下載後點擊即可解壓到當前文件夾;當然你可以使用命令行來進行跨文件夾解壓的。
建立對應的類,在 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); } }
進入Java目錄;CMD 進入該目錄進行 javah 操作:
這個想必大家並不陌生吧,該文件就是 java 類對應的 頭文件,當然如果你比較厲害的話可以不用這樣生成,自己敲代碼完成也行;反正我是不行。
如下,建立文件夾:
拷貝之前的文件進去:
分別實現:
net_qiujuer_ndkdemo_jni_MathKit.cpp
#includenet_qiujuer_ndkdemo_jni_StringKit.cppJNIEXPORT jint JNICALL Java_net_qiujuer_ndkdemo_jni_MathKit_square (JNIEnv *env, jclass cls, jint num) { return num*num; }
#includeJNIEXPORT 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 }
錯誤日志:Error:java.lang.RuntimeException: Some file crunching failed, see logs for detai
優步在線客服怎麼聯系?優步怎麼聯系客服?如果你不在撥打優步客服電話沒人接時,是不是會很心煩呢?沒關系,優步不僅有客服電話,還提供在線客服咨詢哦!下載吧小編為
什麼是dex文件他是Android系統的可執行文件,包含應用程序的全部操作指令以及運行時數據。由於dalvik是一種針對嵌入式設備而特殊設計的java虛擬機,所以dex文
Android中的動畫分為視圖動畫(View Animation)、屬性動畫(Property Animation)以及Drawable動畫。從Android