標籤:htm intellij archive tool abi blank 項目 移植 輸入
最近需要將Python人證對比模型移植安卓端.安卓端需要使用openCV簡單的人像提取處理.在配置openCV前首先需要配置NDK環境.
NDK的介紹(http://www.cnblogs.com/leaven/archive/2010/05/27/1744855.html)
一 NDK在Ubuntu的配置
參考: http://blog.csdn.net/jq_ak47/article/details/52349189
二 NDK在IntelliJ IDEA中的配置
參考: http://blog.csdn.net/yipatshi/article/details/54585049
三 NDK開發執行個體
參考: http://www.cnblogs.com/xiaoxiaoqingyi/p/6524165.html
在main/java下建立建立一個NDKUtils.Java類:
public class NDKUtils { public native String invokeCmethod(); static { System.loadLibrary("NDKUtils"); }}
右鍵選擇 External Tools ---> javah
會在app目錄下產生jni目錄和目錄內一個com_lemon_demo_utils_NDKUtils.h檔案
複製.h 檔案修改尾碼名為 .c (該檔案就是C 語言的實現檔案)
修改com_lemon_demo_utils_NDKUtils.c內容:
JNIEXPORT jstring JNICALL Java_com_lemon_demo_utils_NDKUtils_jniInit (JNIEnv *env, jobject obj){ return (*env)->NewStringUTF(env,"NDK 擷取Native 字串"); }
將jni目錄拷貝至main/java目錄下.
在jni目錄下建立Android.mk和Application.mk:
Android.mk:
LOCAL_PATH:=$(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := NDKUtilsLOCAL_SRC_FILES := com_lemon_demo_utils_NDKUtils.cinclude $(BUILD_SHARED_LIBRARY)
Application.mk:
APP_PLATFORM := android-23APP_ABI := armeabi
在IntelliJ IDEA的命令視窗(Terminal)執行:
cd app/src/main/
繼續輸入:
ndk-build
該命令是編譯C檔案,然後產生 .so 檔案,產生在 app\src\main\libs 目錄下。
完成後會在main目錄下產生libs和obj兩個目錄.
配置build.gradle 檔案,在android {}中添加:
sourceSets{ main{ jni.srcDirs = [] // disable automatic ndk-build call, which ignore our Android.mk jniLibs.srcDir ‘src/main/libs‘ } }
在MainActivity中使用:
package com.lemoncome.opencvdemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class MainOpencvActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_opencv); NDKUtils ndk = new NDKUtils(); TextView text = (TextView) findViewById(R.id.tv); text.setText(ndk.invokeCmethod()); }}
運行程式會輸出字串: NDK 擷取Native 字串
以上測試成功.
四 Android+openCV
首先下載openCV包,地址:http://opencv.org/
最新的3.3,我下載了3.2
opencv配置參考: http://www.cnblogs.com/xiaoxiaoqingyi/p/6676096.html
把 sdk/native 目錄 拷貝到 項目的 jni 目錄下,
Ubuntu+IntelliJ IDEA+Android 配置NDK環境+openCV