在MacOS 10.13.2 下编译 OpenCV3.4.0 + OpenCV Contrib 3.4.0 成 Android 库

道路很曲折,搞明白几个事,其实也简单。我写的都是我自己碰到的问题,供大家参考。

感谢 http://blog.csdn.net/wjskeepmaking/article/details/70597169

我的环境是MacOS10.13.2, Android Studio3.01

现在开始讲一下我的编译打包流程。先做准备工作。(为了好排错,我是把脚本一段段摘出来,分段执行的)

1. 新建一目录(下面统称 WD目录):opencv4android-3.4,后面所有的文件都放到这个目录下。

1. 安装 cmake

如果需要安装CMake,可以先安装MacPorts,然后

 sudo port install cmake

2.下载 build-opencv-for-android:github,会得到两个重要文件:setup.sh, build-android-opencv.sh,放到WD目录下。

3. 下载解压 OpenCV3.4源代码包 + OpenCV Contrib源代码包

 请注意,都是3.4.0版本,如果OpenCV Contrib用的是master,会编译失败,请下载 Tag 3.4.0。

 把两个目录并排放到WD目录下。目录名改为opencv, opencv_contrib。也是为了省事,如果不想改目录名,就改build-android-opencv.sh文件里的目录名。

 你也可以通过运行setup.sh来自动下载源码,执行前,需要修改一下文件里的版本号。

4. 【重要】下载NDK。本来Android Studio 里的SDKManager是可以直接下载 NDK的,但版本太高,是16版。我是用不了。我试了一下,最高只能用到15C版。所以,我把setup.sh里的代码摘出来分段执行。

 git clone --recursivehttps://github.com/tzutalin/android-ndk-downloader.git
 cd android-ndk-downloader
 python download_ndk.py
(请注意选项,要选:24,NDK的版本 r10 到 r15 都可以)

 下载完成后,解压zip。这时,可以设置 NDK_ROOT 环境变量:

 export NDK_ROOT=<ndk解压后的目录 >

 好了,我们已经绕过了第一个坑。

5. 【重要】在命令行下,直接运行 android 命令,如果你收到错误提示:

$ android

*************************************************************************

The "android" command is deprecated.

For manual SDK, AVD, and project management, please use Android Studio.

For command-line tools, use tools/bin/sdkmanager and tools/bin/avdmanager

*************************************************************************

Invalid or unsupported command ""


Supported commands are:

android list target

android list avd

android list device

android create avd

android move avd

android delete avd

android list sdk

android update sdk

 那么恭喜你,你的Android SDK Tools版本太高了。可以参考这往篇文章:http://blog.csdn.net/Story51314/article/details/73201037(感谢作者)

直接从该作者提供的网盘中下载更低版本的 Android SDK Tools,再次感谢作者。

下载后,我建议先备份原来 Android 目录下的tools,然后直接覆盖。我是这么干的,方便。

一般来说,路径是:~/Library/Android/sdk/tools

好了,我们又绕过第二个大坑。

6. 现在我们打开build-android-opencv.sh 文件

编辑:declare -a ANDROID_ABI_LIST=( "x86"  "armeabi" "armeabi-v7a" "arm64-v8a"),选择你希望的架构平台。

编辑:SCRIPT=$(readlink -f $0) ,这里readlink 要改成SCRIPT=$( stat -f $0) ,否则报错。

编辑:WD=`dirname $SCRIPT` 为 WD=$(pwd `dirname $SCRIPT`),取绝对路径,相对路径会出错。我这碰到了这个问题。

好了,我们现在绕过了第三个大坑。后面就比较顺利了。 

7. 现在可以在WD目录下执行:./build-android-opencv.sh ,开始打包编译

如果发现在编译过程中,下载face_landmark_model.dat超时(有70多M大小),可以先从这https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat下载好文件,再复制到 <WD目录>/opencv/.cache/data/,修改文件名为:7505c44ca4eb54b4ab1e4777cb96ac05-face_landmark_model.dat,我不知道这个名称会不会在不同的机器上不同,请注意你的出错提示。

 

剩下的就是等待编译打包结束。要花不少时间,去喝杯咖啡吧。

 

8. 所有编译打包的文件(不同架构平台下的so包和 java源代码)都在 WD目录下的android_opencv里。如果配置你的开发环境,网上有很多教程,我就不在这里讲了。

当出现错误时,我建议把脚本文件中的代码分段出取执行一下。比较好看到问题所在。

 


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值