【OpenCV3.3】搭建VS2017+Android开发环境

标签: opencv android visual studio
16022人阅读 评论(0) 收藏 举报
分类:

        在上一篇【OpenCV3.3】编译源码并搭建VS2017+Windows开发环境中我们搭建了OpenCV的Windows开发环境,现在我们来搭建Android的C++开发环境。本文假设读者的VS2017已经能够正常编译出Android程序,使用的NDK版本是r13b (VS2017 15.3内建支持的NDK版本)。

        编译Android版本OpenCV涉及到交叉编译,相比Windows复杂得多,为此官方提供了编译好的静态库供开发者使用,首先我们来简单看看OpenCV SDK如何使用:

  1. 下载SDK包: opencv-3.3.0-android-sdk.zip,并解压
  2. 我们首先关注路径\opencv-3.3.0-android-sdk.zip\OpenCV-android-sdk\sdk\native,可以看到该目录下的libs3rdparty\libs子目录里存放着各CPU架构的静态库.a;
    同时我们看到\opencv-3.3.0-android-sdk.zip\OpenCV-android-sdk\sdk\native\jni\include目录里存放着所需要的头文件。
  3. 上面的几个目录分别就是Library和Include需要配置的目录,在我们的Android项目属性里配置好相应路径就可以了:
        Include目录: \opencv-3.3.0-android-sdk.zip\OpenCV-android-sdk\sdk\native\jni\include
        Library目录:  \opencv-3.3.0-android-sdk.zip\OpenCV-android-sdk\sdk\native\libs\$(TargetArchAbi)
                            
    \opencv-3.3.0-android-sdk.zip\OpenCV-android-sdk\sdk\native\3rdparty\libs\$(TargetArchAbi)
  4. 打开C++异常(-fexceptions)和运行时类型信息(-frtti),分别在C++属性设置的`代码生成`和`语言`里;否则\opencv2\flann\any.h会出现编译错误(个人表示不喜欢any_cast这种依赖于运行时类型信息和异常的机制)。
  5. Clang/GCC似乎不支持像MSVC那样直接在源码里指定链接库(实际上编译和链接是两个不相关的过程,在编译阶段影响链接阶段也似乎不是很合理),所以在迁移代码的时候需要在Linker->Library Dependencies里添加依赖库,顺便提下这里和Windows添加依赖库有一些不同,*nix系统都是如此,指定依赖库时不需要前缀lib也不需要后缀.a或.so,比如你添加liblibpng.alibopencv_dnn.a这两个依赖库,只需要输入libpng;opencv_dnn即可,此外.so也是可以被链接的,链接.so就和windows平台使用.dll一样,最后运行时动态链接。

        到此为之,不出意外的话我们已经能够在Android上跑OpenCV的程序了,很简单不是?但是如果我们要自行编译OpenCV,比如Github上有新的commits想试试,或者想对源码进行微调等等,就不是那么容易了。这里首先因为CMake尚不支持生成VS上的Android项目*,其次OpenCV项目太庞大不适合人工生成,所以先暂且放弃使用VS编译Android版本OpenCV的想法,等哪天实现了再来更新;而通过命令行进行Build的话,官方已经有文档了,写的也比我好,就不重复了,参考http://code.opencv.org/projects/opencv/wiki/Building_OpenCV4Android_from_trunk

        *ps: 严格来讲是CMake GUI,笔者尝试使用cmake和VS迁移一个项目到Android,指定的toolchain file是从https://github.com/taka-no-me/android-cmake获取的,不过上面的版本几年不维护了,配合高版本cmake使用会出一些问题,改到最后发现虽然目标是生成Android项目,但是CMake却依旧去检测MSVC而不是arm-linux-androideabi工具链,方向都错了不是,果断弃坑,改换手工生成VS的Android项目,虽然一些config.h项需要手动改,但还算完美。

查看评论

VS2017 发布Android项目

VS2017与VS2012发布Xamarin项目时不同了。在VS2017中,项目编译好后,点“生成”->"存档",等生成完后,点击“分发”,即会要求产生签名文件,按提示完成即可得到安装包文件。...
  • JeffCls
  • JeffCls
  • 2017-10-28 21:31:39
  • 1393

Xamarin AndroidVS2017开发环境搭建

  • 2017年07月10日 15:55
  • 2.74MB
  • 下载

vs2017配置纯native项目

http://blog.csdn.net/zhangmiaoping23/article/details/43967075
  • pl19920614
  • pl19920614
  • 2017-04-25 15:42:38
  • 1677

vs2017打包安卓项目

第 1 部分 - 做好应用程序发布准备 应用程序经编码和测试后,必须准备一个包进行分发。 准备此包的第一个任务是生成供发布的应用程序,其中主要涉及到设置应用程序的一些属性。 有关较早版本的 Xa...
  • xsfqh
  • xsfqh
  • 2017-08-09 10:53:54
  • 5673

OpenCV3.2.0+VS2017开发环境配置

OpenCV3.2.0+VS2017开发环境配置本机环境:win10 64位 OpenCV3.2.0 Visual Studio 2017 最后结果,亲测可用目录目录第一部分OpenCV320的下载第...
  • zx249388847
  • zx249388847
  • 2018-02-14 15:37:43
  • 53

Visual Studio 2017为Android APK包签名

Visual Studio 2017为Android APK包签名
  • u014621518
  • u014621518
  • 2017-09-14 14:33:08
  • 709

2017年6月版NDK开发入门

咳咳,虽然现在ADT有点土埋半截的意思,但是在某些特殊情况下还是要用到它,其中NDK的开发是避免不了的。 今日为了某些特殊的理由,本人要做NDK开发,AndroidStudio的NDK又有点不适用。在...
  • starcat2002
  • starcat2002
  • 2017-06-13 02:41:56
  • 836

WINDOWS+CMAKE+VS2017编译OLLVM并整合到VS2017 NDK

OLLVM全称Obfuscator-LLVM,即基于LLVM框架的源码级别混淆工具,相比机器指令混淆,源码级别混淆无需关心底层指令差异(由编译器生成),因而更具兼容性和拓展性,对程序流程的控制更为全面...
  • rrrfff
  • rrrfff
  • 2017-09-26 19:35:56
  • 46389

完全图解VS2017安装过程并演示VS2017创建Linux项目和调试

VS2017个人免费版即社区官方下载地址为:https://download.microsoft.com/download/D/1/4/D142F7E7-4D7E-4F3B-A399-5BACA91E...
  • m0_37170593
  • m0_37170593
  • 2017-07-28 11:00:41
  • 3261

用C/C++开发android应用

在某些情况下,比如原来与很多c/c++的代码, 可能希望采用c/c++编写android应用程序.在这种情况下,一般使用NDK.但是由于android直提供了java接口,因此不能够直接调用andro...
  • srplab1
  • srplab1
  • 2012-05-30 22:21:59
  • 43571
    最新评论