首页 > 代码库 > Android 使用OpenCV之编译环境非CygWin方式(Win7+Eclipse+ADT+CDT+NDK)

Android 使用OpenCV之编译环境非CygWin方式(Win7+Eclipse+ADT+CDT+NDK)

本文完全基于官网: https://dl-ssl.google.com/android/eclipse/

只有简单的三步,官网写的非常简明全面,非常佩服奋斗

准备

1. Eclipse(Indigo)

2. ADT: 这个不说了,无非就是eclipse添加个android的安装源,如果这里选择了NDK Plugin的话,就会自动安装CDT哟;

3. NDK(android-ndk-r9d-windows-x86_64) 

地址: http://developer.android.com/tools/sdk/ndk/index.html#Installing 选择适合自己的版本;

足矣,下面就是几步简单配置:


【配置A】NDK和CDT安装完成后,在项目属性也能看到类似页面,


一劳永逸的方法就是在系统环境变量里添加NDKROOT路径到你解压的NDK路径,



【配置B,添加编译c/c++的头文件】

此时编译还会提示std什么的unresolved,添加头文件包含路径吧,可以勾选上 apply to all configuration;

Open Project Properties -> C/C++ General -> Paths and Symbols and add the following Include paths for C++:

# for NDK r8 and prior:
${NDKROOT}/platforms/android-9/arch-arm/usr/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include
${ProjDirPath}/../../sdk/native/jni/include
# for NDK r8b and later:
${NDKROOT}/platforms/android-9/arch-arm/usr/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include
${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include
${ProjDirPath}/../../sdk/native/jni/include   


【测试】

这样import OpenCV-2.4.6-android-sdk的sample进来测试,注意如果import时选择了copy到workspace(最好不要copy,因为sample中很多代码都用到了sdk里的东西,而且取的是相对路径),则需要添加包含路径到sdk的 jni/include路径下,即上面的绿色背景下的相对路径由于你的移出已经不起作用了。



至此so,apk一个也不缺的出来了,都不用三步;
EnjoyIT,



【编外】:

http://developer.android.com/tools/sdk/ndk/index.html#Installing 不仅有ndk的各种版本,ndk的使用方法在这个地址下也是简明扼要。

比如介绍了使用NativeCode可以有两种方法:

1). 大名鼎鼎的JNI,这种方法发挥AndroidFramework的长处,缺点就是需要针对不同平台编译出不同库(.so),比如常见的arm-eabi, armv7, arm-eabi-withNeon 等版本;

2). NativeActivity,在Android机制里类似Java里面Activity生命周期的回调 函数(OnCreate/OnPause/OnResume之类的),缺点是无法直接使用Service和ContentPrivider类似的功能,此时仍然可以使用JNI;