多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Android NDk 開發簡易教程

Android NDk 開發簡易教程

來源:程序員人生   發布時間:2015-09-01 08:37:45 閱讀次數:10636次

要解決的問題:

Android代碼調用 優秀的C++代碼,高效的實現需要的功能。


整體的思路:


1. 完成 自己的Android代碼;

2. 將c++代碼生成 .so;

3. 將.so 庫放在Android 的libs文件夾當中;

4. Android代碼當中定義待調用接口函數,并導入庫。


具體的操作:

1. 完成 自己的Android代碼;

   這1部份就是Android開發的事情了,不是我的重點和善于,相信是你的善于;

2. 將c++代碼生成 .so;

  我假定你是有你需要的功能的c++代碼的。(沒有你還移植個屁啊O(∩_∩)O哈哈~)

  2.1  c++代碼修改

    這1部份的工作,3個重要的點:

  1,頭文件加入: #include

  2,加入 extern“c”,處理C++代碼;

  3,輸出的接口函數命名1定要規范;Java_包_類_方法 (JNIEnv *, jclass,);

  例子:

#include

#ifdef __cplusplus
extern "C" {
#endif

JNIEXPORT jlong JNICALL Java_org_opencv_samples_facedetect_DetectionBasedTracker_nativeCreateObject
  (JNIEnv *, jclass, jstring, jint);


#ifdef __cplusplus
}
#endif

這里只是頭文件,具體的實現你可以在CPP文件里面實現;

  2.2 Android.mk 文件的修改

  將剛才的源文件加進去,依賴的庫加進去。(1般來講還需要Application.mk的,但是幾近都是1樣的,復制過去就好)

 例子:

 Android.mk 文件很像Makefile文件

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)



#OPENCV_LIB_TYPE:=SHARED
include ../../../opencvsdk/native/jni/OpenCV.mk


LOCAL_SRC_FILES  := DetectionBasedTracker_jni.cpp
LOCAL_C_INCLUDES += $(LOCAL_PATH)
LOCAL_LDLIBS     += -llog -ldl


LOCAL_MODULE     := detection_based_tracker

include $(BUILD_SHARED_LIBRARY)


Application.mk 文件

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android⑻


  2.3 ndk-build編譯

     將以上4個文件放在jni文件夾里面,然后準備開始編譯.so文件。

     只要你安裝的版本在r7 以上就能夠不需要其他的插件了。非常的方便,配置好環境變量,從CMD進入到jni 文件或是它的上1級文件夾,履行ndk-build命令,開始編譯。

     更加詳細的參考:http://blog.csdn.net/ikerpeng/article/details/42643223

3. 將.so 庫放在Android 的libs文件夾當中;

   將剛才編譯生成 的lib文件下下面的.so文件拷貝出來,連帶所在的文件夾(這個是必須的),放到你的Android工程里面的libs文件夾;

4. Android代碼當中定義待調用接口函數,并導入庫。

  定義好接口函數,這個函數名1定和C++中的最后那個名字1樣,然后 System.loadLibrary();導入;

  就能夠在Android的代碼當中代用這個函數了。

例子:

public class PedDetectionNative {
static {
System.loadLibrary("ped_detection");
}
public static native boolean ped(byte[] yuv);
}

接下來你就能夠在Android的代碼里面使用 ped()這個函數了。

轉載標明出處:http://blog.csdn.net/ikerpeng/article/details/45393223


以上完成

iker Cross

2015年 4月 30日


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 成人免费久久精品国产片久久影院 | 久久免费毛片 | 亚洲最大中文字幕 | 精品爱爱 | 国产亚洲精品久久久久久午夜 | 欧美在线一级va免费观看 | 亚洲人成网站在线观看播放 | 国产午夜毛片v一区二区三区 | 亚洲第一视频在线 | 国产尤物在线观看 | 欧美中文日韩 | 亚洲欧美日韩精品永久在线 | 欧美亚洲图片小说 | 成人亚洲国产综合精品91 | 手机看片福利日韩国产 | 俄罗斯videosex性欧美黑吊 | 精品国产亚洲一区二区在线3d | 91最新免费地址入口 | 国产精品国产亚洲精品不卡 | 亚洲a视频在线 | 国产欧美二区 | 一区二区三区日本视频 | 另类亚洲小说 | 黄色的免费网站 | 国产精品亚洲第一区二区三区 | a一级毛片视频免费看 | 国产精品一区二区三区免费视频 | 国产一区亚洲二区三区毛片 | 欧美淫片 | 亚洲a成人网77777在线 | 一区二区三区 | 欧洲freexxxx性 | 日本乱人伦片中文三区 | 日韩欧美亚洲在线 | 国产一区二区精品 | 亚洲精品视频在线 | 欧美激情精品久久久久久久久久 | 久久精品国产一区 | 欧美在线三级 | 亚洲欧美一区二区视频 | 欧美成人做性视频在线播放 |